WMI-Aufgaben: Herstellen einer Verbindung mit dem WMI-Dienst

Um Daten von WMI abzurufen, müssen Sie entweder auf dem lokalen Computer oder über einen Remotecomputer eine Verbindung mit dem WMI-Dienst herstellen, indem Sie eine Verbindung mit einem bestimmten Namespace herstellen. In den meisten Fällen verwenden Sie entweder die Monikerverbindung (Kurzform) oder die Locator-Verbindung. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet.

Für Remoteverbindungen müssen die Einstellungen für Windows-Firewall und DCOM ordnungsgemäß festgelegt sein. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer sowie unter Einrichten einer WMI-Remoteverbindung. Ab Windows Vista kann sich die Benutzerkontensteuerung (User Account Control, UAC) auf den WMI-Zugriff auswirken. Weitere Informationen finden Sie unter Benutzerkontensteuerung und WMI.

In den in diesem Artikel enthaltenen Skriptbeispielen werden nur Daten vom lokalen Computer abgerufen. Weitere Informationen zum Verwenden des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Nachstehend wird die Skriptausführung näher beschrieben.

So führen Sie ein Skript aus

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit VBS-Erweiterung, z. B. filename.vbs. Stellen Sie sicher, dass der Text-Editor der Datei keine TXT-Erweiterung hinzufügt.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie cscript filename.vbs in die Eingabeaufforderung ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie eine Eingabeaufforderung mit erhöhten Rechten verwenden. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch die Benutzerkontensteuerung (User Account Control, UAC) geschützt sein.

Hinweis

Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts sehr viele Ausgabedaten erzeugen können, sollten Sie die Ausgabe in eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt in die Eingabeaufforderung ein, um die Ausgabe des Skripts filename.vbs an outfile.txt umzuleiten.

In der folgenden Tabelle sind Skriptbeispiele aufgeführt, die zum Abrufen verschiedener Datentypen vom lokalen Computer verwendet werden können.

Vorgehensweisen WMI-Klassen oder -Methoden
Herstellen einer Verbindung mit einem Remotecomputer unter Verwendung von WMI Geben Sie eine der folgenden Optionen als Teil Ihrer Moniker-Verbindungszeichenfolge an:
  • Einen NetBIOS-Computernamen wie „atl-dc-01“
  • Einen vollqualifizierten Domänenname wie „atl-dc-01.fabrikam.com“
  • Eine IPv4-Adresse wie 192.168.1.1
  • Ab Windows Vista können Sie eine IPv6-Adresse angeben, wenn sowohl der Zielcomputer als auch der Computer, von dem aus Sie die Verbindung herstellen, IPv6 verwendet.
Weitere Informationen finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer sowie unter IPv6- und IPv4-Unterstützung in WMI.
VB
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
strComputer = "atl-dc-01"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" | format-list -Property Name
Ausführen eines WMI-Skripts unter alternativen Anmeldeinformationen

Verwenden Sie die SWbemLocator.ConnectServer-Methode (oder die IWbemLocator::ConnectServer-Methode in C++), und schließen Sie den entsprechenden Benutzernamen und das entsprechende Kennwort ein. Wenn Sie eine Verbindung mit dem lokalen Computer herstellen, können die Anmeldeinformationen nicht geändert werden. Weitere Informationen finden Sie unter Erstellen eines WMI-Skripts sowie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

VB
strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", "fabrikam\administrator", "password")
Set colProcessList = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
$StrComputer = "atl-dc-01"
$strCredentials = "FABRIKAM\administrator"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" -credential $strCredentials `
   -Impersonation Impersonate | format-list -Property Name

WMI-Aufgaben für Skripts und Anwendungen

WMI-C++-Anwendungsbeispiele

TechNet ScriptCenter

`