Herstellen einer Verbindung mit WMI mithilfe von VBScript
WMI-Skripts können viele der in einem C++-Programm erforderlichen Schritte zusammenfassen. Nicht nur über ein SWbemLocator-Objekt, sondern auch über den Moniker „winmgmts:“ können Sie eine Verbindung mit WMI herstellen. Ein Moniker ist der Kurzname für einen Namespace, eine Klasse oder eine Instanz in WMI. Der Name „winmgmts:“ ist der WMI-Moniker, der den Windows-Skripthost anweist, die WMI-Objekte zu verwenden, eine Verbindung mit dem Standardnamespace herstellt und ein SWbemServices-Objekt abruft. Andere Verbindungsinformationen, z. B. eine Identitätswechselebene oder eine bestimmte Klasse oder Instanz, werden in der Zeichenfolge nach dem Monikernamen angezeigt. Sie können Moniker in Aufrufen verwenden, die WMI-Objekte erstellen oder abrufen. Weitere Informationen finden Sie unter Erstellen einer Monikerzeichenfolge.
Im folgenden Verfahren wird beschrieben, wie Sie mithilfe von SWbemLocator eine Verbindung mit WMI herstellen.
So stellen Sie mithilfe von SWbemLocator eine Verbindung mit WMI her
Rufen Sie ein Locatorobjekt mit einem Aufruf an CreateObject ab.
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Melden Sie sich mit einem Aufruf der ConnectServer-Methode beim Namespace an.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2")
Wenn Sie im Aufruf an ConnectServer keinen Computer angeben, stellt WMI eine Verbindung mit dem lokalen Computer her. Wenn Sie keinen Namespace angeben, stellt WMI eine Verbindung mit dem im Registrierungsschlüssel angegebenen Namespace her.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Skripting\Standardnamespace
Der Standardnamespace ist \root\cimv2. Weitere Informationen zu Namespaces finden Sie unter Erstellen von Hierarchien innerhalb von WMI.
Legen Sie die Identitätswechselebene mit einem Aufruf der Methode SWbemServices.Security_ fest.
objService.Security_.ImpersonationLevel = 3
Weitere Informationen finden Sie unter Festlegen der Sicherheitsebene für Standardprozesse mit VBScript.
Implementieren Sie den Zweck Ihres Skripts.
WMI macht eine Vielzahl von Skriptobjekten verfügbar, die für den Zugriff auf und die Bearbeitung von Daten in Ihrem Netzwerk verwendet werden. Weitere Informationen finden Sie unter Bearbeiten von Klassen- und Instanzinformationen sowie Skripting-API für WMI.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2") objService.Security_.ImpersonationLevel = 3 Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob") i=0 For each Job in Jobs i = i+1 WScript.Echo Job.JobId & " " & Job.Command & VBNewLine Next If i = 0 Then WScript.Echo "No Jobs Scheduled with the AT command were found" End If
Im folgenden Verfahren wird beschrieben, wie Sie eine Verbindung mit WMI herstellen und ein Objekt mithilfe eines Monikers abrufen.
So stellen Sie eine Verbindung mit WMI her und rufen ein Objekt mithilfe eines Monikers ab
Rufen Sie GetObject mit einem Moniker im Eingabeparameter auf.
'the simple version Set MyObject = GetObject("winMgmts::Win32_scheduledJob") 'Or the more complex version strComputer = "." Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
Der Moniker enthält eine Reihe von Elementen, die Sie zum Herstellen einer Verbindung mit WMI verwenden können:
„winmgmts:“ weist WSH an, Skripting-API-Objekte zu verwenden. In diesem speziellen Beispiel weiß der WSH, dass er ein SWbemObject zurückgeben soll, das den ersten Win32_scheduledJob im System beschreibt. Andere mögliche Objekte, die zurückgegeben werden, wären ein SWbemCollection- oder ein SWbemServices-Objekt, je nachdem, was der Moniker beschrieben hat.
Optional können Sie die Sicherheitsstufen für die Verbindung festlegen. Beachten Sie jedoch, dass Sie keine Namens- und Kennwortinformationen in einem Moniker festlegen können. Weitere Informationen finden Sie unter Sichern von Skriptingclients.
Optional können Sie den Pfad zum WMI-Objekt definieren. Dies umfasst entweder den lokalen oder Remotecomputer, den Namespace sowie den Namen der Klasse. Weitere Informationen zur Verwendung des VBScript GetObject in WMI-Skripten finden Sie unter Erstellen einer Instanz und Abrufen einer WMI-Instanz.
Anstatt ein einzelnes Element oder eine einzelne Sammlung abzurufen, können Sie auch das SWbemServices-Objekt abrufen (wie im vorherigen Beispiel beschrieben). Anschließend können Sie zusätzliche Abfragen für das zurückgegebene Objekt aufrufen.
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob") For Each objJob in colScheduledJobs Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine Next
Im vorherigen Beispiel ist der Identitätswechsel oder der impersonationLevel=3 die Standardsicherheitsstufe des Prozesses. Im folgenden Beispiel ist es nicht erforderlich, diese Prozesssicherheitsstufe anzugeben, es sei denn, Sie müssen die Prozesssicherheit zu Delegieren ändern. Weitere Informationen finden Sie unter Festlegen der Sicherheitsebene für Standardprozesse mit VBScript.
Zugehörige Themen