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.