„SWbemObject.ExecMethod_“-Methode

Die ExecMethod_-Methode des SWbemObject-Objekts führt eine von einem Methodenanbieter exportierte Methode aus.

Diese Methode wird angehalten, während die Methode, die an den entsprechenden Anbieter weitergeleitet wird, ausgeführt wird. Anschließend werden die Informationen und der Status zurückgegeben. Die Methode wird vom Anbieter und nicht von WMI implementiert.

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. Der Name der Methode für das Objekt.

objwbemInParams [in, optional]

Dies ist ein SWbemObject-Objekt, das die Eingabeparameter für die ausgeführte Methode enthält. Dieser Parameter ist standardmäßig nicht definiert. Weitere Informationen finden Sie unter Erstellen von InParameters-Objekten und Analysieren von OutParameters-Objekten.

iFlags [in, optional]

Reserviert und muss bei Angabe auf „0“ (null) festgelegt werden.

objwbemNamedValueSet [in, optional]

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

Bei erfolgreicher Ausführung dieser Methode 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

Diese Methode ähnelt SWbemServices.ExecMethod, verarbeitet jedoch direkt das Objekt, dessen Methode ausgeführt werden soll. Im folgenden Codebeispiel wird beispielsweise die StartService-Anbietermethode in Win32_Service aufgerufen und direkter Zugriff verwendet.

oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()

In dieser Version wird SWbemObject.ExecMethod_ zum Ausführen der StartService-Methode aufgerufen.

oService = GetObject("winmgmts:Win32_Service=Alerter")
Set outParam = process.ExecMethod_("StartService")

Verwenden Sie in Fällen, in denen eine Methode nicht direkt ausgeführt werden kann, die Methode SWbemObject.ExecMethod_ als Alternative zum direkten Zugriff für das Ausführen einer Anbietermethode. Wenn Ihre Methode Ausgabeparameter enthält, würden Sie beispielsweise SWbemObject.ExecMethod_ mit einer Skriptsprache verwenden, die keine Ausgabeparameter unterstützt. Andernfalls wird empfohlen, eine Methode über den direkten Zugriff aufzurufen.

  • Die Methode SWbemObject.ExecMethod_ setzt voraus, dass das durch SWbemObject dargestellte Objekt die auszuführende Methode enthält. Die Methode SWbemServices.ExecMethod erfordert dagegen einen Objektpfad. Verwenden Sie SWbemObject.ExecMethod_, wenn Sie das Objekt, dessen Methode Sie ausführen möchten, bereits abgerufen haben.

Beispiele

Im folgenden Beispiel wird die ExecMethod-Methode veranschaulicht. Das Skript erstellt ein Win32_Process-Objekt, das einen Prozess darstellt, der „Notepad.exe“ ausführt. Weitere Informationen zu einem Skript, das die gleichen Vorgänge asynchron ausführt, finden Sie unter SWbemObject.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 SWbemServices-Objekt finden Sie unter SWbemServices.ExecMethod.

' 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
Wbemdisp.h
Typbibliothek
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Siehe auch

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod