<# .SYNOPSIS Updates ServiceNow SCTask after a Linux VM is deleted .DESCRIPTION Updates ServiceNow SCTask after a Linux VM is deleted .NOTES Information or caveats about the function e.g. 'This function is not supported in Linux' .EXAMPLE Test-MyTestFunction -Verbose Explanation of the function or its result. You can include multiple examples with additional .EXAMPLE lines #> function Remove-ITDLinuxServerMissingCmdb { [CmdletBinding()] param ( [string] $SCTaskNum, [string] $ComputerName ) begin { } process { # get current user, SCTask, Ritm, custom variables $assignTo = Get-ServiceNowRecord -Table 'User' -Filter @('email', '-eq', ($env:username + "@nd.gov")) $SCTask = Get-ServiceNowRecord -Table 'Catalog Task' -ID $SCTaskNum $RitmNum = $SCTask.request_item.display_value $Ritm = Get-ServiceNowRecord -Table 'Requested Item' -ID $RitmNum -IncludeCustomVariable [string]$SNHostName = ($RITM.CustomVariable | Where-Object Name -EQ server_name).Value Update-ServiceNowRecord -ID $SCTask.number -Values @{short_description = "VMware VM Removal for $SNHostName"; assigned_to = $assignTo.name } If ($ComputerName -ne $SNHostName) { # false is good Write-Error -Message ("ComputerName entered in parameters does not match Host Name field in " + $SCTaskNum) -ErrorAction Stop } $VMs = Get-VM -Name $ComputerName -ErrorAction SilentlyContinue | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } switch (@($VMs).count) { { 0 } { Write-Warning "$ComputerName not found in vCenter... is it Azure?" } { $_ -gt 1 } { Write-Warning '-gt 1' Write-Error -Message ("Multiple virtual machines with name $ComputerName were found. Are there SRM placeholders? If so, unconfigure SRM and run this again. If there are no placeholders, confirm the virtual machine name.") -ErrorAction Stop } 1 { Write-Warning '1' $TagAssignment = Get-TagAssignment -Entity $VMs $vCenterInfo = $TagAssignment | select Tag, Entity | ConvertTo-Json -Depth 1 If ($VMs.PowerState -eq 'PoweredOn') { #$VMs | Stop-VMGuest -Confirm:$false $VMs | Stop-VM -Confirm:$false } If ($vCenterInfo) { Update-ServiceNowRecord -ID $SCTaskNum -Values @{work_notes = ("vCenter Information: `n " + $vCenterInfo) } # enter work_notes into sctask } } } $CommentsForWorkNotes = ("VMware VM $SNHostName has been deleted. ") #$HardwareRemovalDescription = ("$SNHostName hardware is ready for removal.") # if no errors, close sctask #$CommentsForWorkNotes += "VMware: Virtual machine named $ComputerName deleted." Update-ServiceNowRecord -ID $SCTaskNum -Values @{work_notes = $CommentsForWorkNotes; state = "Closed Complete"; close_notes = $CommentsForWorkNotes} } end { } }