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:
PS> $session
Id : 1
Name : CimSession1
InstanceId : obb38128-3633-4eb8-8b55-6d9210b89bcd
ComputerName : localhost
Protocol : WSMAN
|
When you create the session, you can specify a different remoting protocol as well, like DCOM.
http://powershell.com/cs/blogs/tips/archive/2013/11/28/speeding-up-multiple-wmi-queries.aspx |