This commit is contained in:
Zack Meier
2026-04-15 15:45:50 -05:00
commit 1d304511b8
613 changed files with 140998 additions and 0 deletions
@@ -0,0 +1,80 @@
<#
.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 {
}
}