Erstellen von WMI-Clients

WMI bietet eine standardisierte Systemverwaltungsinfrastruktur, die von verschiedenen Clients genutzt werden kann. Diese Clients reichen vom wmic.exe-Befehlszeilentool bis hin zu System Center Operations Manager. Sie können Ihre eigenen WMI-Clients schreiben, indem Sie entweder die Skripting-API für WMI, die native C++-API oder die Typen im .NET Framework-Klassenbibliotheksnamespace „System.Management“ verwenden.

Erstellen eines WMI-Clients

Die Kernfunktionalität von WMI besteht darin, Objekte aus dem WMI-Repository abzurufen und die Eigenschaften dieser Objekte zu untersuchen. Sie können diese Eigenschaften auch aktualisieren oder Methoden für diese Eigenschaften aufrufen. Die folgenden Beispiele zeigen, wie eine grundlegende WMI-Verwaltungsaufgabe ausgeführt wird: Abrufen des Namens des lokalen Computers.

Begriff BESCHREIBUNG
Erstellen eines Clients mit PowerShell
WMI und PowerShell sind eng miteinander verknüpft; daher ist das Abrufen von WMI-Objekten mit PowerShell einfach ein Aufruf des Cmdlets „Get-WmiObject“. Beachten Sie, dass im ersten Codeschnipsel aus Konsistenzgründen viele der Standardwerte explizit angegeben sind. Im zweiten wird vorausgesetzt, dass die Standardwerte richtig sind.

PowerShell
#viele der Standardparameter werden explizit angegeben $myComputer = Get-WmiObject -ComputerName "." -Namespace "root\cimv2" -Query "SELECT * FROM Win32_ComputerSystem" foreach ($computer in $myComputer) { "System Name: " + $computer.name } 

#assumes the default values are correct Get-WmiObject Win32_ComputerSystem | Format-Table "Name"

Erstellen eines Clients mit VBScript

VBScript war die ursprüngliche Skriptsprache, die häufig mit WMI verwendet wurde. Obwohl PowerShell beliebter geworden ist, werden viele der vorhandenen Codebeispiele in dieser Dokumentation in VBScript geschrieben. Beachten Sie, dass in diesem speziellen VBScript-Beispiel sowohl der Pfad des lokalen Computers als auch die Identitätswechselebene explizit angegeben ist. Dies ist nicht erforderlich, ist aber häufig eine bewährte Methode.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
    Wscript.Echo "Computer Name: " & objItem.Name
Next

Erstellen eines Clients mit C# (Microsoft.Management.Infrastructure)

Dieser Namespace enthält die aktuelle Lösung für den Zugriff auf WMI mit verwaltetem Code und wird als Windows-Verwaltungsinfrastruktur (MI oder WMIv2) bezeichnet. Derzeit ist MI die unterstützte Technologie zum Erstellen verwalteter Verwaltungsclients. Weitere Informationen finden Sie unter Implementieren eines verwalteten MI-Clients und Implementieren eines nativen MI-Clients.

C#
using Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

Erstellen eines Clients mit C# (System.Management)

Dieser Namespace enthält die ursprüngliche Lösung für den Zugriff auf WMI mit verwaltetem Code. Die System.Management-Klassen sind zwar noch verfügbar, die Microsoft.Management.Infrastructure-Klassen sind jedoch im Allgemeinen effizienter und bieten eine bessere Skalierung. Daher wird empfohlen, anstelle der ursprünglichen WMI-Klassen die MI-Klassen zu verwenden.

C#
using Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

In der folgenden Tabelle sind die in diesem Abschnitt behandelten Themen aufgeführt.

Thema BESCHREIBUNG
Herstellen einer Verbindung mit WMI auf einem Remotecomputer Beschreibt eine Reihe von Problemen, die auftreten, wenn Clients die WMI-Infrastruktur auf einem Remotecomputer verwenden.
WMI-Tasks für Skripts und Anwendungen Zeigt Beispiel-WMI-Clientcode.
Erstellen einer WMI-Anwendung oder eines Skripts Enthält Informationen zum Erstellen verschiedener WMI-Clients.
Überwachen von Leistungsdaten Beschreibt, wie WMI zum Überwachen von Leistungsdaten verwendet wird.
Empfangen eines WMI-Ereignisses Beschreibt, wie WMI-Ereignisse angezeigt werden.
Überwachen von Ereignissen Beschreibt, wie WMI-Ereignisse überwacht werden.
Abfragen mit WQL Einführung in die WMI-Abfragesprache (WMI Query Language, WQL).
Abfragen des Status optionaler Features In Windows 7 implementiert WMI die Klasse Win32\_OptionalFeature. Diese Klasse ruft den Status der auf einem Computer vorhandenen optionalen Features ab.
Beschreiben des Speicherorts eines WMI-Objekts Konzentriert sich auf die Syntax zum Beschreiben des Speicherorts einer verwalteten WMI-Entität.
Zugreifen auf andere Betriebssystemfeatures mit WMI Beschreibt, wie WMI-Clients geschrieben werden, die auf Gerätetreiber, Active Directory und SNMP-Geräte zugreifen.
Zugreifen auf Daten im Interop-Namespace Zuordnungsanbieter ermöglichen WMI-Clients (Windows-Verwaltungsinstrumentation) das Durchlaufen und Abrufen von Profilen und zugeordneten Klasseninstanzen aus verschiedenen Namespaces.
Bearbeiten von Klassen- und Instanzinformationen Beschreibt die allgemeinen Aufgaben, die WMI-Clients ausführen müssen.
Verknüpfen von Klassen Erläutert den Ansichtsanbieter und wie er verwendet werden kann, um Informationen aus mehreren WMI-Klassen zusammenzuführen.
Ändern der Systemregistrierung Beschreibt, wie WMI-Clients WMI zum Verwalten von Systemregistrierungsinformationen verwenden können.