Ob SCOM, Nagios oder ein eigenes PowerShell-Skript – fast jede Windows-Überwachung nutzt WMI. Was hinter WMI und CIM steckt und wie Sie die Schnittstelle heute richtig abfragen.
Für die Überwachung von Windows-Systemen und Microsoft-Anwendungen stellt Microsoft seit vielen Jahren eine zentrale Schnittstelle bereit: Windows Management Instrumentation (WMI). Sie basiert auf dem Common Information Model (CIM) – einem Industriestandard der Distributed Management Task Force (DMTF), in der nahezu alle großen Hard- und Softwarehersteller vertreten sind.
Wie WMI aufgebaut ist
- Provider liefern die Daten: für Betriebssystem, Hardware, Dienste, Prozesse, Ereignisprotokolle, aber auch für Anwendungen wie SQL Server, Hyper-V oder Configuration Manager.
- Namespaces gliedern die Klassen, etwa
root\cimv2für das Betriebssystem oderroot\virtualization\v2für Hyper-V. - Klassen beschreiben Objekte (z. B.
Win32_LogicalDisk), ihre Instanzen sind die konkreten Objekte (Laufwerk C:, D: …). - Consumer – Überwachungs- und Verwaltungsanwendungen – fragen die Daten über eine einheitliche API ab.
Weil die Schnittstelle offen ist, nutzen sie nicht nur Microsoft-Produkte wie Operations Manager oder Configuration Manager, sondern auch Open-Source-Überwachungslösungen und eigene Skripte.
WMI heute: CIM-Cmdlets statt WMI-Cmdlets
In PowerShell gibt es zwei Generationen von Befehlen:
| Alt (WMI) | Neu (CIM) |
|---|---|
Get-WmiObject | Get-CimInstance |
| Kommunikation über DCOM | Kommunikation über WinRM (WS-Management), optional DCOM |
| nur Windows PowerShell 5.1 | Windows PowerShell 5.1 und PowerShell 7 |
Beispiele:
# Freier Speicherplatz aller lokalen Datenträger
Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType = 3' |
Select-Object DeviceID, @{n='Frei (GB)';e={[math]::Round($_.FreeSpace/1GB,1)}}
# Dienste, die automatisch starten sollten, aber nicht laufen – auf mehreren Servern
$s = New-CimSession -ComputerName SRV01, SRV02
Get-CimInstance -CimSession $s -ClassName Win32_Service -Filter "StartMode='Auto' AND State<>'Running'" |
Select-Object PSComputerName, Name, State
Tipps für die Praxis
- Filtern auf dem Server: Der Parameter
-Filterwertet die Bedingung auf dem Zielsystem aus – viel schneller, als alle Instanzen zu übertragen und lokal zu filtern. - Teure Klassen meiden: Abfragen auf
CIM_DataFileoderWin32_Productsind langsam bzw. haben Nebenwirkungen (Win32_Productstößt eine Konsistenzprüfung aller MSI-Pakete an). - CIM-Sessions wiederverwenden: Für mehrere Abfragen an denselben Server eine Session aufbauen.
Heute
WMI ist auch in Windows 11 und Windows Server 2025 die zentrale Verwaltungsschnittstelle. Das Kommandozeilenwerkzeug wmic ist dagegen abgekündigt – verwenden Sie stattdessen die CIM-Cmdlets in PowerShell.