WMI – Professionelle Systemverwaltung

WMI Title

Welcher Prozessor steckt im Computer ? Wieviel Speicher wurde verbaut ? Wie lautet meine aktuelle IP-Adresse ? Wir möchten einen Service auf einem anderen Computer stoppen, wie können wir das erledigen ?

WMI ist die Antwort auf all diese Fragen !

WMI ( Windows Management Instrumentation ) ist die Microsoft Implementierung des standartisierten und plattformunabhängigen WBEM – CIM ( Common Information Models ) zur Verwaltung von IT Systemen.

Oder noch etwas verständlicher ausgedrückt: Dank WMI können wir Hard- oder Software auf einfache Art und Weíse auslesen und oftmals auch direkt steuern. Und das Ganze funktioniert sogar remote auf einem anderen Computer !

Wie funktioniert WMI ?

Wmi ist ein 3-Schichtmodell.

Wmi Diagram

I) WMI Consumers (oberste Schicht)

Das sind unter anderem wir, die Attribute auslesen, Events setzen und Methoden ausführen möchten.

  • Nativem C / C++ Client
  • Scripting
  • .net Client
  • Commandline tool

WMI wurde mittels DCOM implementiert und funktioniert daher auch remote auf einem anderen Computer.

II) WMI Infrastructure (Mittlere und „vermittelnde“ Schicht)

Dies ist eine Windows-OS-Komponente und besteht aus dem WMI-Service und dem WMI-Repository.
Das Repository ist eine Art Datenbank, in der die Namespaces und Klassen der Provider registriert werden. Der WMI Service vermittelt zwischen uns (WMI Consumers) und den WMI-Providern.

III) WMI Provider (unterste Schicht)

Ein WMI Provider verwaltet ein managed Objekt, welches entweder eine Hardware wie z.B.: Prozessor, Festplatte, … oder eine Logische Einheit wie z.B.: Service, Prozesse, Registry, … sein kann.
Der Provider besteht aus einer COM Komponente (DLL), also dem eigentlichen Programm und einer MOF-Datei die den Namespace und die Klassen enthält, welche im WMI Repository registriert werden.
Der WMI Provider erhält Messages vom WMI Service und führt dann entweder Methoden am managed Objekt aus oder gibt Daten vom managed Objekt an den WMI Service weiter.

Auslesen eines Attributes aus einer Hardware Komponente mittels WMI

Wir geben nun unsere „Lese-Attribut-Anfrage“ via WMI-Com-Api an den WMI-Service.

  1. Dieser sieht im WMI-Repository nach, welchen Provider dies betrifft.
  2. Nun gibt er diese Anfrage an den betreffenden WMI-Provider weiter.
  3. Der WMI-Provider liest nun das Attribut mithilfe des Treibers aus der Hardware.
  4. Der Provider übermittelt den ausgelesenen Wert wieder an den WMI-Service.
  5. Der WMI-Service gibt den Wert dann an uns weiter.

Installation

Die WBEM Installation findet sich unter: %SystemRoot%\system32\wbem

WQL

Um WMI Abfragen so komfortable wie möglich zu gestalten, wurde von Microsoft eine eigene Sprache entwickelt: WQL ( WMI Query Language ) sozusagen SQL für WMI. WQL ist ein Subset von SQL mit einigen Modifikationen.

 MSDN: WQL

In der Praxis …

Wir möchten einige Informationen über unseren Computer erfahren. Dafür benötigen wir folgende Parameter:

  • Namespace: root
  • Klasse: Win32_ComputerSystem
  • Attribut: Name

und schon erfahren wir den Computernamen.

Andere Attribute liefern weitere Informationen:

  • „Domain“ liefert die Domäne,
  • „Manufacturer“ liefert den Hersteller,
  • „NumberOfProcessors“ liefert CPUs,
  • „NumberOfLogicalProcessors“ liefert die Cores,

All diese Informationen erhalten wie mit einigen wenigen und unkomplizierten Script Zeilen.

WMI Tools

Microsoft bietet mehrere Tools um den Umgang mit WMI zu erleichtern.

WMI Code – Creator

Die Vielzahl der Möglichkeiten, die Unmenge an Klassen, Methoden und Attributen trieb schon manchen in die Verzweiflung.

Daher spendiert Microsoft ein Tool, mit dessen Hilfe die richtigen Klassen und Attribute ohne grossen Aufwand rasch gefunden werden.

Der generierte Code kann direkt im Editor ausgeführt, oder in unterschiedlichen Scriptsprachen abgespeichert werden. Das Tool darf kostenlos heruntergeladen werden.

Praxis: WMI Code – Creator

 Microsoft: WMI Code - Creator

Commandline Tool: wmic.exe

Mit wmic.exe bietet Microsoft ein sehr mächtiges Commandline Tool als Schnittstelle zu WMI.

 MSDN: wmic

WMI für Programmierer und Scripter

Powershell

Das Cmdlet „Get-WMiObject“ bietet eine Schnittstelle zu WMI.

 Technet: Get-WMiObject

C# / vb.net

WMI.net ermöglicht den Zugriff auf WMI mittels .net Sprachen wie C# oder VB.net. Dafür werden die Namespace  System.Management und System.Management.Instrumentation bereitgestellt.

 MSDN: WMI.net

C++

Der Zugriff über C++ ist etwas zäh, da man hier über die COM Schnittstelle zugreifen muss.

 MSDN: WMI C++ Beispiele

Alternativen zu WMI

Native Abfragen / Steuerung

Bietet das managed Objekt auch einen direkten Weg zur Verwaltung an, so kann dies sogar Vorteile gegenüber der WMI Variante bringen:

  • Geschwindigkeit: Native Abfragen sind oft performanter. Die Services via SCM (Service Control Manager) aufzulisten ist beispielsweise performanter gegenüber WMI.
  • Umfang: Manchmal liefert die direkte Abfrage detailiertere Informationen über ein Attribut als die Abfrage via WMI.

System Management BIOS

Manchen wird der Begriff SMBIOS vielleicht weniger bekannt sein …
Beim Computer Startup wird durch die Firmware (BIOS) die interne Hardware enumeriert und initialisiert. Diese Informationen werden dabei im SMBIOS Datablock gespeichert und können später unter Windows wieder ausgelesen werden.
Allerdings war der Zugriff auf die SMBIOS Table bis W2k3 sehr abenteuerlich. Erst seit Windows 2003 wird eine API Funktion bereitgestellt um die „SystemFirmwareTable“ auszulesen. Leider liegt diese auch noch im RAW Format vor und muss erst noch „geparsed“ werden.
SMBIOS unterliegt der DMTF Spezifikation die in verschiedenen Versionen vorliegt.

 SMBIOS Spezifikation auf www.dmtf.org

Immer auf dem Laufenden !
Liken Sie uns jetzt auf Facebook
Keinen Artikel verpassen !
Folgen Sie uns jetzt auf Twitter

Fanden Sie den Artikel interessant ? Dann empfehlen Sie ihn doch gleich weiter !

Sagen Sie uns Ihre Meinung !

Happy new year 2016 !
Happy New Year 2016 !
Google Tips
Die besten Google Tipps, Hacks, Games und Easter Eggs !
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Password Sünden / Password Sins
13 gefährliche Passwort Sünden
Passwort Generator / password generator
Online Passwort Generator
Password Hacker
Passwort Hacker – Wie kommen Hacker an Ihre Passwörter ?
Leet
Leet – die Hacker Sprache
Spy++ Title
Windows Fenster Spionage mit Spy++
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
Windows Construct
Fenster im Eigenbau !
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Windows Construct
Fenster im Eigenbau !
Debug Messages
Programmierer Geflüster abhorchen
Registry timestamp / Registry Zeitstempel
Registry Keys haben einen Zeitstempel ?!
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
WMI Code Creator
WMI Code Creator – WMI ganz komfortabel
Environment Variables / Umgebungs Variablen
Windows konfigurieren mit Umgebungsvariablen
Passwort Generator / password generator
Online Passwort Generator