Windows Management Instrumentation (WMI)
« | 20 Feb 2019 | »WBEM
, oder auch
Web-Based Enterprise Management
ist ein Ansatz um Administration und Fernwartung in großen Netzwerken
(Unternehmen) zu standardisieren.
Microsoft preschte schon vor den 2000ern mit seiner eigenen COM-Implementierung davon vor, nannte es WMI und deshalb haben wir heute zu vielen Systemkonfigurationen primär nur über die WMI-Schnittstellen Zugang.
Die meisten kennen WMI vom Windows Scripting Host und nehmen es als
“seltsam” wahr.
Einerseits ist die Menge an Funktionen und Möglichkeiten erschlagend groß,
andererseits läuft vieles über eine SQL-ähnliche Abfragesprache.
Das Beispiel zeigt, wie man einen PC herunter fährt.
- Man verbindet sich zum WMI-Dienst (mit ein paar Angaben, dass z.B. das Shutdown-Privileg gebracht wird)
- Man empfängt die Liste aller “laufenden” Betriebssystem aus der Klasse
Win32_OperatingSystems
- würde mich sehr wundern, wenn da jemals mehr als eine Instanz zurück käme
- Auf allen Instanzen wird die “Shutdown()” Methode ausgeführt.
Theoretisch kann man über die String-Variable Computer
auch den DNS oder
NETBIOS
Namen eines anderen Systems angeben, oder mit .
auf das lokale
System verweisen. Das war unter Windows XP noch Gang und Gäbe, doch heute
lassen Firewall und DCOM-Einstellungen das nicht mehr so ohne weiteres zu und
man ist auf das lokale System beschränkt.
WMI hat primär eine COM-Schnittstelle die (wie wir im Beispiel sahen), auch
Script-fähig ist, also mit dem IDispatch Interface arbeitet.
Doch seit Einführung von dotNet und etwas später der Powershell, sind die
alten VBScripts kaum mehr anzutreffen (obwohl sie noch brav funktionieren).
Außerdem stellt WMI in bestimmten Situationen Zugänge bereit, für die es keine
anderen APIs gibt.
Das IP-Adressen Setup ist so ein Bereich, wo über die Instanzen der WMI-Klasse
Win32_NetworkAdapterConfiguration
über die Methoden EnableStatic
, SetGateways
, EnableDNS
, EnableDHCP
.
Doch was für mich gerade hoch spannend ist, ist die Tatsache, dass der Hyper-V Service ebenfalls primär über WMI ansteuerbar ist. Und da Microsoft ja auch den kostenlosen “Nur-Hyper-V” Server zum Download anbietet, interessiere ich mich sehr für dessen Verwaltung um ein paar kleine Tools dafür zu schreiben.
Doch es gibt noch weitere Gebiete, die nur eine WMI Schnittstelle bieten:
z.B. Die Ansteuerung des Unified Write Filters unter Windows 10 IoT
Enterprise. Während der alte Enhanced und File-based Write Filter in Windows 7
Embedded noch seine eigene C-API mitbrachte, ist aber Windows 10 WMI
neben der Kommandozeile die einzige Möglichkeit, dieses Feature zu verwalten.
Fazit
WMI ist bietet zu extrem vielen Bereichen Zugänge, die nicht im entferntesten alle auf einer Blog-Seite erwähnt werden können. Sogar Dateisuchen lassen sich über WQL - die WMI Query Language abbilden.
Folglich kommt System-Tool Programmierer an dieser essentiellen Technologie unter Windows vorbei.