PowerShell WMI/CIM

WMI and CIM queries with Get-CimInstance for system inventory and remote management.

WMI/CIM Quick Reference

CIM vs WMI — always prefer CIM
# OLD (deprecated) — WMI uses DCOM, blocked by firewalls
Get-WmiObject Win32_OperatingSystem

# NEW (preferred) — CIM uses WinRM (WSMan), firewall-friendly
Get-CimInstance Win32_OperatingSystem
System info
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, LastBootUpTime, TotalVisibleMemorySize
Get-CimInstance Win32_ComputerSystem | Select-Object Name, Domain, TotalPhysicalMemory, NumberOfLogicalProcessors
Disk
Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" |
    Select-Object DeviceID, @{N='GB';E={[math]::Round($_.Size/1GB)}}, @{N='FreeGB';E={[math]::Round($_.FreeSpace/1GB)}}
Network adapters
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled=True" |
    Select-Object Description, IPAddress, MACAddress, DefaultIPGateway
Installed software
Get-CimInstance Win32_Product | Select-Object Name, Version, Vendor | Sort-Object Name
Remote queries
$session = New-CimSession -ComputerName server01
Get-CimInstance Win32_OperatingSystem -CimSession $session
Get-CimInstance Win32_Service -CimSession $session | Where-Object State -eq Running
Remove-CimSession $session
BIOS and hardware
Get-CimInstance Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, SerialNumber
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed

See Also

  • System — services, processes, and system administration

  • Remoting — CIM sessions over WinRM