SWbemObject.ExecMethod-Methode _
Die ExecMethod-Methode _ des SWbemObject-Objekts führt eine Methode aus, die von einem Methodenanbieter exportiert wurde.
Diese Methode wird angehalten, während die Methode ausgeführt wird, die an den entsprechenden Anbieter weitergeleitet wird. Anschließend werden die Informationen und der Status zurückgegeben. Der Anbieter anstelle von WMI implementiert die -Methode.
Eine Erläuterung dieser Syntax finden Sie unter Dokumentkonventionen für die Skripterstellungs-API.
Syntax
objOutParams = .ExecMethod_( _
ByVal strMethodName, _
[ ByVal objwbemInParams ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ] _
)
Parameter
-
strMethodName [ In]
-
Erforderlich. Name der Methode für das -Objekt.
-
objwbemInParams [ in, optional]
-
Dies ist ein SWbemObject-Objekt, das die Eingabeparameter für die auszuführende Methode enthält. Standardmäßig ist dieser Parameter nicht definiert. Weitere Informationen finden Sie unter Constructing InParameters Objects (Erstellen von InParameters-Objekten) und Parsing OutParameters Objects (Analyse von OutParameters-Objekten).
-
iFlags [ in, optional]
-
Reserviert und muss bei Angabe auf 0 (null) festgelegt werden.
-
objwbemNamedValueSet [ in, optional]
-
In der Regel ist sie nicht definiert. Andernfalls ist dies ein SWbemNamedValueSet-Objekt, dessen Elemente die Kontextinformationen darstellen, die vom Anbieter verwendet werden können, der die Anforderung bedient. Ein Anbieter, der solche Informationen unterstützt oder erfordert, muss die erkannten Wertnamen, den Datentyp des Werts, die zulässigen Werte und die Semantik dokumentieren.
Rückgabewert
Wenn diese Methode erfolgreich ist, gibt ein SWbemObject-Objekt zurück. Das zurückgegebene -Objekt enthält die out-Parameter und den Rückgabewert für die auszuführende Methode.
Fehlercodes
Nach Abschluss der ExecMethod-Methode _ kann das Err-Objekt einen der Fehlercodes in der folgenden Liste enthalten.
-
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)
-
Nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs.
-
wbemErrInvalidMethod – 2147749934 (0x8004102E)
-
Die angeforderte Methode war nicht verfügbar.
-
wbemErrAccessDenied – 2147749891 (0x80041003)
-
Der aktuelle Benutzer war nicht berechtigt, die Methode auszuführen.
Hinweise
Diese Methode ähnelt der SWbemServices.ExecMethod,funktioniert jedoch direkt auf dem Objekt, dessen Methode ausgeführt werden soll. Im folgenden Codebeispiel wird beispielsweise die StartService-Anbietermethode im _ Win32-Dienst und der direkte Zugriff verwendet.
oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()
Diese Version ruft SWbemObject.ExecMethod _ auf, um die StartService-Methode auszuführen.
oService = GetObject("winmgmts:Win32_Service=Alerter")
Set outParam = process.ExecMethod_("StartService")
Verwenden SWbemObject.ExecMethod _ als Alternative zum direkten Zugriff zum Ausführen einer Anbietermethode in Fällen, in denen es nicht möglich ist, eine Methode direkt auszuführen. Sie würden z. B.SWbemObject.Exe cMethod _ mit einer Skriptsprache verwenden, die keine Ausgabeparameter unterstützt, wenn Ihre Methode über out-Parameter verfügt. Andernfalls wird empfohlen, eine Methode auf den direkten Zugriff zu verwenden.
- Die SWbemObject.ExecMethod-Methode _ geht davon aus, dass das durch SWbemObject dargestellte Objekt die auszuführende Methode enthält. Im Gegensatz dazu erfordert SWbemServices.ExecMethod einen Objektpfad. Verwenden SWbemObject.ExecMethod, _ wenn Sie das Objekt, dessen Methode Sie ausführen möchten, bereits erhalten haben.
Beispiele
Das folgende Beispiel zeigt die ExecMethod-Methode. Das Skript erstellt ein Win32 _ Process-Objekt, das einen Prozess darstellt, der Editor. Weitere Informationen zu einem Skript, das die gleichen asynchron ausgeführten Vorgänge veranschaulicht, finden Sie unter SWbemObject.ExecMethodAsync _. Ein Beispiel für die Verwendung des direkten Zugriffs finden Sie unter Create Method in Class Win32 _ Process . Ein Beispiel für den gleichen Vorgang mit einem SWbemServices-Objekt finden Sie unterSWbemServices.Exe cMethod.
' Connect to WMI and obtain a Win32_Process object.
' This is also an SWbemObject object.
Set oProcess = GetObject("winmgmts: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 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_
' Specify the name of the process to be run.
oInParams.CommandLine = "Notepad.exe"
Set oOutParams = oProcess.ExecMethod_("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 _ SWbemObject |
| IID |
IID _ ISWbemObject |