Erstellen von WMI-Clients

WMI bietet eine standardisierte Systemverwaltungsinfrastruktur, die von einer Reihe verschiedener Clients genutzt werden kann. Diese Clients reichen vom wmic.exe befehlszeilentool bis System Center Operations Manager. Sie können eigene WMI-Clients schreiben, indem Sie entweder die WMI-Skript-API, die native C++-API oder die Typen im Namespace der System.Management .NET Framework-Klassenbibliothek verwenden.

Erstellen eines WMI-Clients

Die Kernfunktionalität von WMI besteht aus dem Abrufen von Objekten aus dem WMI-Repository und dem Untersuchen der Eigenschaften dieser Objekte. Sie können diese Eigenschaften auch aktualisieren oder Methoden für diese Eigenschaften aufrufen. In den folgenden Beispielen wird gezeigt, wie Sie eine grundlegende WMI-Verwaltungsaufgabe ausführen: Abrufen des Namens des lokalen Computers.

Begriff Beschreibung
Erstellen eines Clients mit PowerShell
WMI und PowerShell sind eng integriert. Daher ist das Abrufen von WMI-Objekten mit PowerShell lediglich eine Frage des Aufrufs des Get-WmiObject Cmdlets. Beachten Sie, dass der erste Codeausschnitt aus Konsistenz-Grundwerten viele der Standardwerte explizit anknippt. Bei der zweiten wird davon ausgegangen, dass die Standardwerte korrekt sind.

PowerShell
#explicitly states many of the default parameters
$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 immer beliebter ist, sind viele der vorhandenen Codebeispiele in dieser Dokumentation in VBScript geschrieben. Beachten Sie, dass in diesem VBScript-Beispiel sowohl der Pfad des lokalen Computers als auch die Ebene des Identitätswechsels explizit angegeben werden. dies ist nicht erforderlich, 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 Management Infrastructure (MI oder WMIv2) bekannt. Mi ist derzeit 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. Obwohl die System.Management-Klassen noch verfügbar sind, sind die Microsoft.Management.Infrastructure-Klassen im Allgemeinen effizienter und skalieren besser. 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 können, wenn Clients die WMI-Infrastruktur auf einem Remotecomputer verwenden.
WMI-Aufgaben für Skripts und Anwendungen Zeigt WMI-Beispielclientcode.
Erstellen einer WMI-Anwendung oder eines Skripts Stellt Informationen zum Erstellen verschiedener WMI-Clients zur Verfügung.
Ü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 Führt die WMI Query Language (WQL) ein.
Abfragen des Status optionaler Features In Windows 7 hat WMI die Win32 _ OptionalFeature-Klasse implementiert. Diese Klasse ruft den Status der optionalen Features ab, die auf einem Computer vorhanden sind.
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 Windows WMI-Clients (Management Instrumentation), Profile und zugeordnete Klasseninstanzen aus verschiedenen Namespaces zu durchlaufen und abzurufen.
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 zusammenzubringen.
Ändern der Systemregistrierung Beschreibt, wie WMI-Clients WMI zum Verwalten von Systemregistrierungsinformationen verwenden können.