Speeding Up Multiple WMI Queries

by Nov 28, 2013

Whenever you run Get-WmiObject against a remote system, it will create a new connection. So if you query different WMI classes, each query will use its own connection, which slows down overall performance.

Beginning with PowerShell 3.0, there is a new set of cmdlets. With these cmdlets it is easy to reuse an existing connection to efficiently run multiple queries:

$session = New-CimSession ComputerName localhost
$os = Get-CimInstance ClassName Win32_OperatingSystem CimSession $session
$bios = Get-CimInstance -ClassName Win32_BIOS -CimSession $session 

The session by default uses WSMAN:

When you create the session, you can specify a different remoting protocol as well, like DCOM.

Twitter This Tip! ReTweet this Tip!