Messdaten abfragen und interpretieren Windows Management Instrumentation WMI

Wie viel Speicher steckt im lokalen oder entfernten Computer? Wie ist die Festplatte angeschlossen? Und wie bekommt der IT-Profi diese Informationen heraus, ohne sich aus dem Büro zu bewegen? Unter Microsoft Windows am einfachsten mit der „Windows Management Instrumentation“ (WMI).

Anbieter zum Thema

Die Windows Management Instrumentation (WMI) ist Microsofts Implementierung des Common Information Models (CIM), einer Kernfunktionalität des standardisierten Web Based Enterprise Managements (WBEM) für die Windows-Plattform.
Die Windows Management Instrumentation (WMI) ist Microsofts Implementierung des Common Information Models (CIM), einer Kernfunktionalität des standardisierten Web Based Enterprise Managements (WBEM) für die Windows-Plattform.
(Bild: Schlede/Bär)

Mit WMI haben Administratoren und IT-Experten die Möglichkeit, Windows-PCs und -Server elegant aus der Ferne anzusteuern, ohne sich per Remote Desktop (RDP) aufschalten zu müssen. Wer etwas auf sich hält und für die Zukunft im Bereich der Windows-Administration gewappnet sein möchte, der lernt am ehesten die Vorzüge und Leistungsfähigkeit der Powershell – und zwar zügig. Die Powershell bedient sich an vielen Stellen den Fähigkeiten von WMI. Diese Techniken können, noch immer recht galant, auch ohne die Powershell zur Anwendung kommen.

Was ist überhaupt WMI?

Die Windows Management Instrumentation (WMI) ist die Implementierung von Microsoft und auch Erweiterung des „Common Information Models“ (CIM), einer Kernfunktionalität des standardisierten „Web Based Enterprise Management“ (WBEM) für die Windows-Plattform. WMI ermöglicht den schreibenden und lesenden Zugriff auf nahezu alle Einstellungen von Windows-Systemen.

Verständlicherweise ist es damit im Windows-Umfeld die wichtigste Schnittstelle zur Administration und Fernwartung von Windows-Computern, unabhängig davon, ob es sich um PCs oder Server handelt. WMI wird typischerweise per Powershell, VBScript oder schlicht über das Kommandozeilenprogramm „Windows Management Instrumentation Command Line“ beziehungsweise die „Windows Management Instrumentation Console“ (WMIC) angesprochen.

WMI ist in einem dreischichtigen Modell aufgebaut: Provider, CIM Object Manager (CIMOM) und die „Konsumenten“ der WMI-Informationen. Provider, die unterste WMI-Schicht, sind Software-Agenten, die Informationen (beispielsweise über das Betriebssystem), Dienste, Programme oder Systemtreiber verarbeiten und an den CIM Objekt Manager weiterreichen.

Die drei WMI-Schichten

Provider extrahieren die Management-Informationen aus den verschiedenen Datenquellen über verschiedene Software-Interfaces. Dank dieser Abstraktionsschicht ist die versionsübergreifende Nutzung einfacher. Der CIMOM ist ein Informations- und Anfrage-Broker, der über eigene Repository-Datenbanken verfügt. Der CIMOM selbst ist ein Systemdienst, der auch als „WinMgmt“ bezeichnet wird. Provider verbinden sich mit dem CIMOM über COM-Schnittstellen.

CIMOM speichert alle Informationen in strukturierte Klassen und ermöglicht einen gezielten Zugriff auf gewünschte Management-Informationen. Eigenschaften, im englischen Original als „Properties” bezeichnet, sind sowohl eine beschreibende als auch operative Information einer Klasse. Ein gutes Beispiel ist die Instanz einer Klasse von „Win32_DiskDrive“. In dieser Klasse gibt es eine Eigenschaft mit der Bezeichnung „InterfaceType“ – diese Eigenschaft hat üblicherweise einen Wert – beispielsweise „IDE“ oder „USB“.

Methoden sind Funktionalitäten, die eine Klasse selbst bietet. Zum Beispiel bietet die Klasse „Win32_Directory“ eine Methode mit den Namen „Compress()“. Hinter dieser Methode verbirgt sich der Befehl „Komprimieren“, den Anwender auch aus der Windows-Oberfläche selbst kennen.

Ereignisse, im englischsprachigen Original als „Events“ betitelt sind, sind Meldungen, die ein „WMI-Konsument“ quasi abonnieren kann. Traditionell werden Ereignisse angefragt, die auf den Ausfall einer Komponente oder Verbindung zielen oder auf das Verlassen von zuvor definierten Wertebereichen. Das beste Beispiel hierfür ist die Auslastung der CPU. Die Klasse „Win32_Processor“ verfügt über eine Eigenschaft „LoadPercentage“. Steigt die Auslastung auf über 75 Prozent so wäre dies ein Ereignis, welches den Administrator dann interessieren könnte, sofern der Wert über eine längere Zeit erreicht wird.

Schnelleinstieg mit WMIC

Üblicherweise ist WMI auf allen gängigen Windows-Systemen bereits installiert und aktiviert, kann folgerichtig sofort vom Administrator genutzt werden. Sollte dies nicht der Fall sein, gilt es sicherzustellen, dass der WMI-Dienst aktiv ist. Der einfachste Weg, sich der Datengestalt von WMI zu nähern, ist das hierfür mitgelieferte Konsolenprogramm mit dem Namen WMIC (Windows Management Instrumentation Console). Die Konsole kann der Anwender bei Bedarf interaktiv nutzen oder es kann Befehl für Befehl direkt über die herkömmliche Eingabeaufforderung angesprochen werden.

Letzteres geschieht in der gestarteten CMD-Konsole durch Eingabe eines Befehls wie:

wmic ComputerSystem get "TotalPhysicalMemory" / value

Dieser gibt den Byte-Wert für den Arbeitsspeicher des lokalen Computers aus. Wer sich für alle Eigenschaftswerte aus der Klasse Computersystem interessiert, wählt den Befehl

wmic ComputerSystem get * / value

Das Sternchen fungiert hier als Joker-Zeichen, ähnlich der SQL-Syntax. Eigenschaftennamen darf der Benutzer in seiner Abfrage auch verknüpfen, beispielsweise ermittelt folgendes Kommando sinnvolle Werte zum Prozessor:

wmic CPU get "Name", "CurrentClockSpeed", _ "NumberOfLogicalProcessors" /VALUE

Von der gewählten Reihenfolge unbeeindruckt gibt Windows nun die aktuelle Frequenz in MHz, den Namen des Prozessors und die Anzahl der logischen Prozessoren aus. Angesichts der doch eher überschaubaren Anzahl von CPU-Herstellern verwundert es doch sehr, dass sich Intel und AMD nicht einmal innerhalb der eigenen Produktlinie auf eine ordentliche Darstellung einigen konnten. Schade!

Die aktuelle Prozessorauslastung lässt sich per WMI ganz einfach auch rhythmisch auslesen:

wmic CPU get "LoadPercentage" /every:1

Möchte der Administrator mit WMIC auf ein entferntes System zugreifen, bietet sich der Erweiterungsschalter „/node: {IP/Host-Name}“ an. Innerhalb der Benutzerrechteverwaltung eines Active Directories steht somit der schnelle Zugriff auf viele Verwaltungsdaten zur Verfügung.

Speicherausstattung (richtig) ermitteln

So praktisch WMIC für den schnellen Zugriff auf WMI auch ist, das Kommandozeilen-Tool hat durchaus seine Grenzen. Logische Entscheidungen, also IF … THEN . ELSE-Konstrukte, sind damit eher schwierig zu realisieren. An dieser Stelle soll VB-Skript als Sprache aushelfen. Das folgende kleine Programm (als ram.vbs gespeichert) ermittelt den aktuellen Arbeitsspeicherausbau des lokalen Computers.

Option Explicit
Dim objWMIService, objComputer, colComputer
Dim strComputer, varSpeicherGB, intSpeicherMB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
   intSpeicherMB = int((objComputer.TotalPhysicalMemory) /1048576)
   if intSpeicherMB > 1000 then
      varSpeicherGB = round(intSpeicherMB/1000)
      else
         varSpeicherGB = "0," & round(intSpeicherMB/10)
   end if
   Wscript.Echo "System Name: " & objComputer.Name _
   & vbCrLF & "RAM: " & intSpeicherMB & " MByte" _
   & vbCrLF & "RAM: " & varSpeicherGB & " GByte"
Next

WMI liefert den TotalPhysicalMemory in der Klasse Win32_ComputerSystem als Byte-Wert, der zunächst auf MByte umgerechnet wird – die aktuell eher gebräuchliche Angabe. Besondere Beachtung gilt dem Bereich if intSpeicherMB: Ist der Speicherausbau im Bereich Gigabyte, so wird der Arbeitsspeicher adäquat auch als GByte ausgewiesen, ansonsten mit einem führenden „Null – Komma – Wert“.

Auch auf die genaue Bezeichnung, Geschwindigkeit oder Dimensionierung der Arbeitsspeichermodule kann der Anwender mit WMI(C) zugreifen und diese lesen:

wmic Memorychip get "devicelocator", "Partnumber", "Speed", "Tag", "Capacity" /value

Etwas mehr Aufwand bereitet die Aufbereitung der Information, welche Speicher-Bänke eines Servers oder Computer noch frei sind. Hierzu verweisen wir auf das englischsprachige Skript von TNJMAN im Technet von Microsoft.

Festplattenwerte interpretierten

Um auf Festplattenwerte zuzugreifen, nutzen wir an dieser Stelle die Powershell und greifen auf die Klasse „Win32_DiskDrive“ zu und selektieren die Eigenschaften für Interfacetyp und Bezeichnung:

Get-WMIObject -Class Win32_DiskDrive | Select Interfacetype, Caption

Dieses Kommando, abgesetzt auf virtualisierten VMware-Rechnern, liefert perfekte Daten zurück. Virtuelle IDE-Laufwerke sind als solche zu erkennen und auch SATA-Devices heißen ATA. Auf einer physikalischen Dell Precision T3500 Workstation unter Windows 10 mutiert das Gespann aus zwei 2 TByte SATA-Festplatten in einem RAID-0-Verbund zu einem „SCSI Intel Raid 0 Volume“. Leider liefert die größte Chip-Schmiede der Welt (Intel) keine WMI-Variante, um Einblick auf die Gestalt des RAID-Verbunds zu bekommen.

Die Umwandlung von WMIC-Ergebnissen bezüglich der Festplattendimensionierung in gebräuchliche Dimensionen fällt ebenfalls ein wenig schwer. Wer sich die aufwändige Transformation von Byte-Werten hin zu Giga- oder Terabyte sparen möchte, sollte einen Blick auf die Lösung von Paul Tomasi auf Experts Exchange werfen.

Wird alles anders? – MI!

Microsoft ist seit jeher dafür bekannt, seine Benutzer mit immer neuen Abkürzungen oder faktisch identisch klingenden Technologien zu malträtieren. Wer als Administrator eine Sharepoint-Landschaft betreut, der dürfte vom Einfallsreichtum der Produktnamendesigner aus Redmond im Versionstakt überrascht sein.

Ähnlich geht es auch bei WMI zu, denn mit dem Aufkommen des Windows Servers 2012 und der Desktop-Variante Windows 8 wurde auf Basis der aktuellen CIM-2.60-Infrastruktur-Spezifikation und dem http-basierten WS-Man-Protokoll von Microsoft ein neuer Verwaltungs-Layer vorgestellt: „Windows Management Infrastructure“, kurz MI, glücklicherweise ist der Nachfolger der Windows Management Instrumentation (WMI) zu einhundert Prozent kompatibel, so dass das derzeitige WMI-Wissen nach wie vor nutzbar ist.

Die jüngste Verwaltungsvariante wird für Windows 7, Server 2008R2 und dem Windows Server 2008 Standard als Teil des „Windows Management Framework 3.0“ im Nachhinein installiert und dürfte für die kommenden Jahre von stärkerem Interesse sein.

(ID:44231975)