As the command says this command shows you all the information you would like to know about Snapshots! Very useful for putting this command into a scheduled task and receiving an email form it reporting on your Snapshots.
Starting from the top, the command can not be run on its own. It needs information to be passed on by the Get-VM Command. For a list of all the snapshots in your environment run the following
Get-VM | Get-Snapshot
Both Get-VM and Snapshot have default wildcard capability so picks up everything in the criteria. Below is another example but narrowed down to 1 VM for display purposes.
Get-VM vmname | Get-Snapshot
So now to move on to an automated report, I will share the script and then analyse it line by line below.
$body = Get-VM | Get-Snapshot | Select Name, VM, SizeMb, Created | Out-String
send-mailmessage -From “myemail.com” -To “myemail.com” -SmtpServer “smtp.com” -Body $body
Now for the Line by line analyse
add-pssnapin VMware.VimAutomation.Core -> This line is to add the VMware Cmdlets into a normal Windows Powershell console to allow easier access to set-up the Scheduled Task
Connect-ViServer vCenterServer -> As explained in my first ever post this command is to connect to a vCenter server or a Host from a CLI application
$body = Get-VM | Get-Snapshot | Select Name, VM, SizeMb, Created | Out-String -> We put our details in a variable “$body” for re-use later on | Get-VM issues a wildcard to collect all VM’s then passes that info through the pipeline | Get-Snapshot once again collects all snapshots for all VM’s and passes the data through the pipeline | We then Select the attributes we need (remembering that pipelines cancel the last pipe out e.g. During the selection we are not selecting any Get-VM attributes) Name of the Snapshot, VM name, Size in MB and Created Date | Out-String puts the object data into an array of strings
send-mailmessage -From “myemail.com” -To “myemail.com” -SmtpServer “smtp.com” -Body $body -> This line is self explainetry and requires input for the FROM email address, TO email address and SMTP Server. Body attribute is using the variable we created earlier for tidiness.