Files
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

59 lines
2.0 KiB
PowerShell

## TO-DO: update SQL status to Expired-Alerted when a ticket is created, so duplicate tickets are not generated
[CmdletBinding()]
param (
[string]
$VMName,
[int]
$Id, # ??
[switch]
$WhatIf
)
Write-Verbose -Message "Connect to vCenter and ServiceNow"
New-ITDServiceNowSession -Environment Production -Credential $Secret:SnowVMCred
Connect-ITDvCenter -Credential $Secret:svcitdiaasauto
# find all VMs, with VMName if entered
If ($PSBoundParameters.ContainsKey('VMName')) {
Write-Verbose -Message "VMname parameter found $VMName" -Verbose
$VMs = Get-VM -Name $VMName | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" }
}
Else {
Write-Verbose -Message "VMname parameter not found" -Verbose
$VMs = Get-VM | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" }
}
# find expired snapshots of the VMs
If ($PSBoundParameters.ContainsKey('Id')) {
Write-Verbose -Message "ID parameter found $Id" -Verbose
$AllSnapshots = $VMs | Get-Snapshot | Where-Object Name -Like "AutoSnap_$Id*"
}
Else {
Write-Verbose -Message "ID parameter not found" -Verbose
$AllSnapshots = $VMs | Get-Snapshot | Where-Object Name -Like "AutoSnap_*"
}
ForEach ($Snapshot in $AllSnapshots) {
$SnapshotObj = $Snapshot.Description | ConvertFrom-Json
If ( $SnapshotObj.Expire -lt (Get-Date).AddHours(-24) ) {
$NewITDServiceNowIncidentParams = @{
CallerUsername = 'svcvmwareadm';
ShortDescription = ("VMware Snapshot #" + $SnapshotObj.Id + " cleanup failure.");
Description = ("VMware Snapshot #" + $SnapshotObj.ID + " cleanup failure. Snapshot expired more than 24 hours ago, but it still exists.");
Impact = 3;
Urgency = 3;
Category = 'Systems Platforms - Systems';
Subcategory = 'VMware';
AssignmentGroup = 'NDIT-Computer Systems Windows';
}
New-ITDServiceNowIncident @NewITDServiceNowIncidentParams
}
}
Disconnect-ITDvCenter