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 |
|
Libreria dei tipi |
|
DLL |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |