WMI vs CIM speed tests–the final round

As a final test I want to see what happened when I ran multiple commands against the remote machine.

PS> 1..100 |
foreach {
Measure-Command -Expression{1..100 | foreach {
Get-WmiObject -Class Win32_ComputerSystem -ComputerName W12SUS;
Get-WmiObject -Class Win32_OperatingSystem -ComputerName W12SUS;
Get-WmiObject -Class Win32_LogicalDisk -ComputerName W12SUS}}
} |
Measure-Object -Average TotalMilliseconds


Count    : 100
Average  : 6986.797156
Sum      :
Maximum  :
Minimum  :
Property : TotalMilliseconds


PS> 1..100 |
foreach {
Measure-Command -Expression{1..100 | foreach {
Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName W12SUS;
Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName W12SUS;
Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName W12SUS}}
} |
Measure-Object -Average TotalMilliseconds


Count    : 100
Average  : 8430.833188
Sum      :
Maximum  :
Minimum  :
Property : TotalMilliseconds

 

PS> $sess = New-CimSession -ComputerName W12SUS
PS> 1..100 |
foreach {
Measure-Command -Expression{1..100 | foreach {
Get-CimInstance -ClassName Win32_ComputerSystem -CimSession $sess;
Get-CimInstance -ClassName Win32_OperatingSystem -CimSession $sess;
Get-CimInstance -ClassName Win32_LogicalDisk -CimSession $sess}}
} |
Measure-Object -Average TotalMilliseconds


Count    : 100
Average  : 3460.203938
Sum      :
Maximum  :
Minimum  :
Property : TotalMilliseconds

WMI is slightly faster than CIM but using a CIM session is by far and away the fastest.

My conclusion is that WMI and CIM are comparable, with WMI having a slight edge for speed. If you want to run multiple commands against a remote machine you need to use a CIM session as it is way faster.

Leave a Reply