WMI Skripte - Basics

WMI (Windows Management Instrumentation) ist eine Sammlung von COM Objekten auf die der WSH (Windows Script Host) zugreifen kann. WMI ist eine mächtige Erweiterung der Windows Skripting Umgebung für Automatisations Objekte. So gibt es direkt in WSH beispielsweise keine Methoden, um Dienste zu verwalten - WMI bietet diese Möglichkeit.
Vor allem können wir mit WMI sehr viele Management Informationen von Computern auslesen und darauf will ich im weiteren näher eingehen (siehe auch WMI multi).

Zuerst einmal zwei Methoden für den Zugriff auf WMI.

Methode 1:
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objLocator.ConnectServer(".", "root\cimv2")
objWMIService.Security_.ImpersonationLevel = 3
Methode 2:
Set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Beide Methoden machen im Prinzip das Gleiche - sie stellen eine Verbindung zu WMI her.

In der Methode 2 wird der sogenannte Moniker WinMgmts: genutzt, über den in einem WMI Skript implizit auch der Verbindungsaufbau gemacht wird.
In den meisten Skripten wird diese Methode für die Verbindung zu einem WMI Namespace oder einer WMI Klasse benutzt.

Ein Moniker besteht aus drei Komponenten:
- einem prefix WinMgmts:
- einer Sicherheits Einstellung (optional)
- einem WMI Pfad (optional)

Die Komponenten des Monikers WinMgmts:

WinMgmts: Der Moniker Kurzname
impersonationLevel=
impersonate
Diese Sicherheits Einstellung bestimmt, dass für die Zugriffe auf WMI die Credentials des ausführenden Kontos übergeben werden.
Das ist die empfohlene Einstellung.
\\.\root\cimv2 Gibt an, mit welchem Computer und mit welchem WMI Namespace die Verbindung hergestellt werden soll.
Dabei bedeutet \\.\ der lokale Computer und root\cim2 ist der WMI Namespace.
Ein Namespace kann mit einer Dateifreigabe verglichen werden. Der Namespace ist die Freigabe selbst, die WMI Klassen sind die Ordner in der Freigabe und die Properties der Klassen sind die Dateien. Ist der Namespace nicht angegeben, dann wird der Wert aus der Registry HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\Scripting\Default Namespace ausgelesen.

Die obigen Code Fragmente sind Teil der WMI Skripte und unter anderem in die folgenden Routinen eingebaut.
GetComputerInfo() Einige Hardware Infos von einem Computer einholen.