metodo SWbemObject.ExecMethod_

Il metodo ExecMethod_ dell'oggetto SWbemObject esegue un metodo esportato da un provider di metodi.

Questo metodo viene sospeso mentre viene eseguito il metodo inoltrato al provider appropriato. Vengono quindi restituite le informazioni e lo stato. Il provider anziché WMI implementa il metodo .

Per una spiegazione di questa sintassi, vedere Document Conventions per l'API di scripting.

Sintassi

objOutParams = .ExecMethod_( _
  ByVal strMethodName, _
  [ ByVal objwbemInParams ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

Parametri

strMethodName [in]

Obbligatorio. Nome del metodo per l'oggetto .

objwbemInParams [in, facoltativo]

Si tratta di un oggetto SWbemObject che contiene i parametri di input per il metodo in esecuzione. Per impostazione predefinita, questo parametro non è definito. Per altre informazioni, vedere Costruzione di oggetti InParameters e analisi di oggetti OutParameters.

iFlags [in, facoltativo]

Riservato e deve essere impostato su 0 (zero) se specificato.

objwbemNamedValueSet [in, facoltativo]

In genere, non è definito. In caso contrario, si tratta di un oggetto SWbemNamedValueSet i cui elementi rappresentano le informazioni di contesto che possono essere utilizzate dal provider che sta servendo la richiesta. Un provider che supporta o richiede tali informazioni deve documentare i nomi dei valori riconosciuti, il tipo di dati del valore, i valori consentiti e la semantica.

Valore restituito

Se questo metodo ha esito positivo, viene restituito un oggetto SWbemObject . L'oggetto restituito contiene i parametri out e il valore restituito per il metodo in esecuzione.

Codici di errore

Dopo il completamento del metodo ExecMethod_ , l'oggetto Err può contenere uno dei codici di errore nell'elenco seguente.

wbemErrFailed - 2147749889 (0x80041001)

Errore non specificato.

wbemErrInvalidClass - 2147749904 (0x80041010)

La classe specificata non è valida.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un parametro specificato non è valido.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Memoria insufficiente per completare l'operazione.

wbemErrInvalidMethod - 2147749934 (0x8004102E)

Metodo richiesto non disponibile.

wbemErrAccessDenied - 2147749891 (0x80041003)

L'utente corrente non è stato autorizzato a eseguire il metodo .

Commenti

Questo metodo è simile a SWbemServices.ExecMethod, ma opera direttamente sull'oggetto il cui metodo deve essere eseguito. L'esempio di codice seguente, ad esempio, chiama il metodo del provider StartService in Win32_Service e usa l'accesso diretto.

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

Questa versione chiama SWbemObject.ExecMethod_ per eseguire il metodo StartService .

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

Usare SWbemObject.ExecMethod_ come alternativa all'accesso diretto per l'esecuzione di un metodo provider nei casi in cui non è possibile eseguire direttamente un metodo. Ad esempio, si userebbe SWbemObject.ExecMethod_ con un linguaggio di scripting che non supporta i parametri di output se il metodo dispone di parametri out. In caso contrario, il metodo consigliato per richiamare un metodo consiste nell'usare l'accesso diretto.

  • Il metodo SWbemObject.ExecMethod_ presuppone che l'oggetto rappresentato da SWbemObject contenga il metodo da eseguire. Al contrario, SWbemServices.ExecMethod richiede un percorso oggetto. Utilizzare SWbemObject.ExecMethod_ se è già stato ottenuto l'oggetto di cui si desidera eseguire il metodo.

Esempio

Nell'esempio seguente viene illustrato il metodo ExecMethod . Lo script crea un oggetto Win32_Process che rappresenta un processo che esegue blocco note. Per altre informazioni su uno script che illustra le stesse operazioni eseguite in modo asincrono, vedere SWbemObject.ExecMethodAsync_. Per un esempio che usa l'accesso diretto, vedere Create Method in Class Win32_Process . Per un esempio della stessa operazione usando un oggetto SWbemServices , vedere 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

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Intestazione
Wbemdisp.h
Libreria dei tipi
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Vedi anche

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod