VMWARE CLI get all snapshot script
POVERCLI script
$myVMs = Get-VM
$VMsWithSnaps = @()
foreach ($vm in $myVMs) {
$view2 = $vm | Get-Annotation -Name email
$snap = $vm | get-snapshot
$vmView = $vm | Get-View
if ($vmView.snapshot -ne $null) {
Write-Host "VM $vm has a snapshot"
$SnapshotEvents = Get-VIEvent -Entity $vm -type info -MaxSamples 1000 | Where {
$_.FullFormattedMessage.contains("Create virtual machine snapshot")}
try {
$user = $SnapshotEvents[0].UserName
$time = $SnapshotEvents[0].CreatedTime
$view3 = $view2.Value
$snap2 = $snap.Description
$snapname = $snap.Name
} catch [System.Exception] {
$user = $SnapshotEvents.UserName
$time = $SnapshotEvents.CreatedTime
}
$VMInfo = .. | Select "VM","CreationDate","User","Snapname","Description","Email"
$VMInfo."VM" = $vm.Name
$VMInfo."CreationDate" = $time
$VMInfo."User" = $user
$VMInfo."Email" = $view3
$VMInfo."Description" = $snap2
$VMInfo."Snapname" = $snapname
$VMsWithSnaps += $VMInfo
}
}
$VMsWithSnaps | Sort CreationDate | Export-Csv -Path C:\Users\$env:username\Desktop\snapshots.csv