As of PowerShell 3.0, there are two ways to work with management classes in PowerShell, WMI and CIM. PowerShell 1.0 and 2.0 only supported the WMI-module which is now superseeded by the new and improved CIM-module. In a later release of PowerShell, the WMI-cmdlets will be removed.
Comparison of CIM and WMI-modules:
CIM-cmdlet | WMI-cmdlet | What it does |
---|---|---|
Get-CimInstance | Get-WmiObject | Gets CIM/WMI-objects for a class |
Invoke-CimMethod | Invoke-WmiMethod | Invokes a CIM/WMI-class method |
Register-CimIndicationEvent | Register-WmiEvent | Registers event for a CIM/WMI-class |
Remove-CimInstance | Remove-WmiObject | Remove CIM/WMI-object |
Set-CimInstance | Set-WmiInstance | Updates/Saves CIM/WMI-object |
Get-CimAssociatedInstance | N/A | Get associated instances (linked object/classes) |
Get-CimClass | Get-WmiObject -List | List CIM/WMI-classes |
New-CimInstance | N/A | Create new CIM-object |
Get-CimSession | N/A | Lists CIM-sessions |
New-CimSession | N/A | Create new CIM-session |
New-CimSessionOption | N/A | Creates object with session options; protocol, encoding, disable encryption etc. (for use with New-CimSession ) |
Remove-CimSession | N/A | Removes/Stops CIM-session |
Should I use CIM or WMI with Windows PowerShell? @ Hey, Scripting Guy! Blog