I wanted to share with you another small example of how there are many ways to do things in PowerCLI. I wrote a post a while back about How to Speed Up Your PowerCLI Queries and there I came to the conclusion that not always is using Get-View faster
I came across a case that a customer had a snapshot that was taken (never mind the reason) on all the VM's and this snapshot is removed with a script thereafter.
They wanted to track the number of commitments left to complete.
So one way was
$a = get-vm | Get-Snapshot -Name "Thursday Backup" Write-Host "" Write-Host "$(Get-Date -Format hh:mm) - There are still $($a.count) Snapshots left" Write-Host ""
and that to complete this gave this result
[12:17:42 PM] ~> measure-command {$a = get-vm | Get-Snapshot –Name 
"Thursday Backup" ; Write-Host ""; 
Write-Host "$(Get-Date -Format HH:mm) - There are still $($a.count) Snapshots left"; Write-Host ""}
12:21 - There are still x Snapshots left
Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 41
Milliseconds      : 410
Ticks             : 2214108194
TotalDays         : 0.00256262522453704
TotalHours        : 0.0615030053888889
TotalMinutes      : 3.69018032333333
TotalSeconds      : 221.4108194
TotalMilliseconds : 221410.8194
But there is a quicker way to do this.
Function Get-Snapsleft  {
$a = Get-View -ViewType Virtualmachine -Property Snapshot | % {
	$_.Snapshot | % {
		$($_.RootSnapshotList)
	}
}
$b = $a | ? {$_.Name -eq "Thursday Backup" }
Write-Host ""
Write-Host "$(Get-Date -Format HH:mm) - There are still $($b.count) Snapshots left"
Write-Host ""
 $a=$b=$null
}
[12:21:57 PM] ~> Measure-Command {Get-Snapsleft}
12:26 - There are still x Snapshots left
Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 2
Milliseconds      : 359
Ticks             : 23590940
TotalDays         : 2.73043287037037E-05
TotalHours        : 0.000655303888888889
TotalMinutes      : 0.0393182333333333
TotalSeconds      : 2.359094
TotalMilliseconds : 2359.094
That is one heck of a difference….
The technique to speed this up I took from mattboren over here..
Check your scripts, see if you can improve them – sometimes you might be surprised as to what you can achieve.