#PSTip Optimizing WMI object retrieval
Whenever we use WMI cmdlets to query either local or remote machines, we need to keep the following points in mind:
Don’t ever pipe the WMI objects to Where-Object cmdlet to filter the WMI output unless there is a need to do so. Consider this example:
Get-WmiObject -Class Win32_OperatingSystem -ComputerName $servername | Where-Object { $_.BuildNumber -eq "7601" }
The above command forces WMI to retrieve the objects to the local session and pass them on to Where-Object for filtering. This takes longer depending on the number of objects to retrieve or the size of the objects. This is where the –Filter parameter of the Get-WmiObject comes into play.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName $servername -Filter "BuildNumber=7601"
In this example using –Filter parameter, the filtering happens on the remote system and results in faster execution of the command.
Share on: