SWbemServices.ExecMethod-Methode
Die ExecMethod-Methode des SWbemServices-Objekts führt eine Methode aus, die von einem Methodenanbieter exportiert wird. Diese Methode blockiert, während die Methode, die an den entsprechenden Anbieter weitergeleitet wird, ausgeführt wird. Anschließend werden die Informationen und der Status zurückgegeben. Der Anbieter und nicht WMI implementiert die Methode.
Diese Methode wird im synchronen Modus aufgerufen. Weitere Informationen finden Sie unter Aufrufen einer Methode.
Eine Erläuterung dieser Syntax finden Sie unter Dokumentkonventionen für die Skript-API.
Syntax
objOutParams = .ExecMethod( _
ByVal strObjectPath, _
ByVal strMethodName, _
[ ByVal objWbemInParams ], _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ] _
)
Parameter
-
strObjectPath
-
Erforderlich. Zeichenfolge, die den Objektpfad des Objekts enthält, für das die Methode ausgeführt wird. Weitere Informationen finden Sie unter Beschreiben des Speicherorts eines WMI-Objekts.
-
strMethodName
-
Erforderlich. Name der Methode für das Objekt.
-
objWbemInParams [optional]
-
Ein SWbemObject-Objekt, das die Eingabeparameter für die ausgeführte Methode enthält. Dieser Parameter ist standardmäßig nicht festgelegt. Weitere Informationen finden Sie unter Erstellen von InParameters-Objekten und Analysieren von OutParameters-Objekten.
-
iFlags [optional]
-
Reserviert. Dieser Wert muss null (0) sein.
-
objWbemNamedValueSet [optional]
-
Dies ist in der Regel nicht definiert. Andernfalls handelt es sich um ein SWbemNamedValueSet-Objekt, dessen Elemente die Kontextinformationen darstellen, die von dem Anbieter verwendet werden können, der die Anforderung verarbeitet. Ein Anbieter, der solche Informationen unterstützt oder benötigt, muss die erkannten Wertnamen, den Datentyp des Werts, die zulässigen Werte und die Semantik dokumentieren.
Rückgabewert
Wenn die Methode erfolgreich ist, wird ein SWbemObject-Objekt zurückgegeben. Das zurückgegebene Objekt enthält die Ausgabeparameter und den Rückgabewert für die ausgeführte Methode.
Fehlercodes
Nach Abschluss der ExecMethod-Methode enthält das Err-Objekt möglicherweise einen der Fehlercodes aus der folgenden Liste.
-
wbemErrFailed – 2147749889 (0x80041001)
-
Unbekannter Fehler.
-
wbemErrInvalidClass – 2147749904 (0x80041010)
-
Die angegebene Klasse war ungültig.
-
wbemErrInvalidParameter – 2147749896 (0x80041008)
-
Ein angegebener Parameter ist ungültig.
-
wbemErrOutOfMemory – 2147749894 (0x80041006)
-
Es ist nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs vorhanden.
-
wbemErrInvalidMethod – 2147749934 (0x8004102E)
-
Die angeforderte Methode war nicht verfügbar.
-
wbemErrAccessDenied – 2147749891 (0x80041003)
-
Der aktuelle Benutzer oder die aktuelle Benutzerin war nicht zur Ausführung dieser Methode autorisiert.
Bemerkungen
Verwenden Sie in Fällen, in denen eine Methode nicht direkt ausgeführt werden kann, die Methode SWbemServices.ExecMethod als Alternative zum direkten Zugriff für das Ausführen einer Anbietermethode. Mit der ExecMethod-Methode können Sie Ausgabeparameter, sofern vom Anbieter bereitgestellt, mit einer Skriptsprache abrufen, die keine Ausgabeparameter unterstützt. Andernfalls wird empfohlen, eine Methode über den direkten Zugriff aufzurufen. Weitere Informationen finden Sie unter Bearbeiten von Klassen- und Instanzinformationen.
Im folgenden Codebeispiel, das die StartService-Anbietermethode in Win32_Service aufruft, wird beispielsweise direkter Zugriff verwendet.
oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()
In diesem Beispiel wird SWbemServices.ExecMethod zum Ausführen der StartService-Methode aufgerufen. Beachten Sie, dass ein Objektpfad erforderlich ist, da SWbemServices.ExecMethod im Gegensatz zu SWbemObject.ExecMethod nicht bereits auf dem Objekt ausgeführt wird.
Set WbemServices = GetObject("winmgmts:")
Set oService = GetObject("winmgmts:Win32_Service='Alerter'")
Set oPath = GetObject("winmgmts:Win32_Service='Alerter'").Path_
WbemServices.ExecMethod oPath, "StartService"
Die Methode SWbemServices.ExecMethod erfordert einen Objektpfad. Wenn das Skript bereits ein SWbemObject-Objekt enthält, verwenden Sie die SWbemObject.ExecMethod-Methode.
Beispiele
Das folgende Beispiel zeigt die Methode ExecMethod. Das Skript erstellt ein Win32_Process-Objekt, das einen Prozess darstellt, der den Windows-Editor ausführt. Es zeigt die Einrichtung eines InParameters-Objekts und das Abrufen von Ergebnissen aus einem OutParameters-Objekt. Ein Skript, das die gleichen Vorgänge in asynchroner Ausführung zeigt, finden Sie unter SWbemServices.ExecMethodAsync. Ein Beispiel für die Verwendung des direkten Zugriffs finden Sie unter Create-Methode der Win32_Process-Klasse. Ein Beispiel für den gleichen Vorgang mit einem SWbemObject finden Sie unter SWbemObject.ExecMethod.
' Connect to WMI
set Services = getobject("winmgmts:root\cimv2")
' Obtain the class definition object of a Win32_Process object.
Set oProcess = Services.Get("Win32_Process")
' Create the SWbemMethod.InParameters object
' to hold the input parameter needed
' for the Win32_Process.Create method call.
' The oProcess.Methods_("Create") call
' obtains obtains a class object that
' defines the correct input parameters
' for the Win32_Process.Create call.
' The InParameters object is an
' SWbemObject object so SWbemObject.SpawnInstance_
'can be called to create it.
Set oInParams = _
oProcess.Methods_("Create").InParameters.SpawnInstance_
oInParams.CommandLine = "Notepad.exe"
'Call SWbemServices.ExecMethod with the WMI path Win32_Process
Set oOutParams = _
Services.ExecMethod( "Win32_Process", "Create", oInParams)
If oOutParams.ReturnValue = 0 Then
wscript.echo "Create method executed successfully."
Else
' If the Create method failed to execute,
' an empty OutParameters object is returned.
If IsNull(oOutParams.ReturnValue) Then
wscript.echo "Create method failed to execute."
Else
wscript.echo "Create method executed" _
& " but had error " _
& "0x" & hex(oOutParams.ReturnValue)
End If
End If
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows Vista |
Unterstützte Mindestversion (Server) |
Windows Server 2008 |
Header |
|
Typbibliothek |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |