Snapshots sind super. Wenn man aber vergisst diese zu löschen, werden sie ggf. zu einem Problem. Dieses Skript listet alle Snapshots von eingeschalteten VMs und schickt sie als Tabelle an einen E-Mail Empfänger:
# Hier kann eine Ausnahmeliste definiert werden. # Z.B. können hier die Golden Images von VMware Horizon, etc. rein. # Also alles was eingeschaltet sein darf und trotzdem Snapshots haben darf $Ausnahmeliste = @() # $Ausnahmeliste += "VMName" $Weiss = "bgcolor='#FFFFFF'" $Hell = "bgcolor='#F2F5A9'" # HellGelb $Dunkel = "bgcolor='#F4FA58'" # DunkelGelb $FarbenCounter = 0 # vCenter/ESX und Credentials definieren $vCenterName = "vCenter01" $vCenterIP = "192.168.0.100" $Benutzer = "administrator@vsphere.local" $Passwort = "P@ssw0rd" # E-Mail Server, Absender und Empfänger wird definiert $MailHost = "192.168.0.200" $MailFrom = "$vCenterName@contoso.de" $MailSubject = "Offene Snapshots auf $vCenterName" $MailTo = "helpdesk@contoso.de" ####################################### # ---------------------------------------------------------------------- # VMware Module laden Get-Module -ListAvailable VMware* | Import-Module # Verbindung zum vCenter/ESX wird initialisiert Connect-VIServer -Server $vCenterIP -User $Benutzer -Password $Passwort # Abfrage nach Snapshot mit folgenden Kriterien # VM ist nicht ausgeschaltet $VMs = Get-VM | ? {$_.PowerState -ne "PoweredOff"} $html = @() if($VMs){ $VMs = $VMs | Sort VMName foreach($VM in $VMs){ $VMName = $VM.Name if(!($Ausnahmeliste -like $VMName)){ $Snapshots = Get-Snapshot -VM $VMName foreach($Snapshot in $Snapshots){ if(($FarbenCounter % 2) -eq 0){ $bgcolor = $Dunkel #Dunkle Farbe }else{ $bgcolor = $Hell # Helle Farbe } $Name = $Snapshot.Name $Description = $Snapshot.Description $Created = ($Snapshot.Created).ToString("dd.MM.yyyy - HH:mm:ss") $SizeGB = [System.Math]::Round($Snapshot.SizeGB, 2) $html += "<tr $Weiss><td>VM</td><td>$VMName</td></tr>" $html += "<tr $bgcolor><td>Name</td><td>$Name</td></tr>" $html += "<tr $bgcolor><td>Beschreibung</td><td>$Description</td></tr>" $html += "<tr $bgcolor><td>Erstellt am</td><td>$Created</td></tr>" $html += "<tr $bgcolor><td>Größe</td><td>$SizeGB GB</td></tr>" $html += "<tr><td></td></tr>" $FarbenCounter++ } } } if($html){ $output = "<table border='1'>" $output += $html $output += "</table>" $MailBody = @() $MailBody += "Folgende eingeschaltete VMs haben offene Snapshots:<br>" $MailBody += $output $MailBody = $MailBody | Out-String Send-MailMessage -SmtpServer $MailHost -To $MailTo -From $MailFrom -Subject $MailSubject -Body $MailBody -BodyAsHtml -Encoding UTF8 } }