Metodo SWbemServices.ExecMethod
Il metodo ExecMethod dell'oggetto SWbemServices esegue un metodo esportato da un provider di metodi. Questo metodo si blocca mentre viene eseguito il metodo inoltrato al provider appropriato. Vengono quindi restituite le informazioni e lo stato. Il provider, anziché WMI, implementa il metodo .
Questo metodo viene chiamato in modalità sincrona. Per altre informazioni, vedere Chiamata di un metodo.
Per una spiegazione di questa sintassi, vedere Document Conventions per l'API di scripting.
Sintassi
objOutParams = .ExecMethod( _
ByVal strObjectPath, _
ByVal strMethodName, _
[ ByVal objWbemInParams ], _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ] _
)
Parametri
-
strObjectPath
-
Obbligatorio. Stringa contenente il percorso dell'oggetto per il quale viene eseguito il metodo. Per altre informazioni, vedere Descrizione della posizione di un oggetto WMI.
-
strMethodName
-
Obbligatorio. Nome del metodo per l'oggetto .
-
objWbemInParams [facoltativo]
-
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 [facoltativo]
-
Riservato. Il valore deve essere zero.
-
objWbemNamedValueSet [facoltativo]
-
In genere, questo 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 il 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
Usare SWbemServices.ExecMethod come alternativa all'accesso diretto per l'esecuzione di un metodo provider nei casi in cui non è possibile eseguire direttamente un metodo. Il metodo ExecMethod consente di ottenere parametri di output, se il provider li fornisce, con un linguaggio di scripting che non supporta i parametri di output. In caso contrario, il metodo consigliato per richiamare un metodo consiste nell'usare l'accesso diretto. Per altre informazioni, vedere Modifica delle informazioni sulla classe e sull'istanza.
Ad esempio, l'esempio di codice seguente che chiama il metodo del provider StartService in Win32_Service usa l'accesso diretto.
oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()
Questo esempio chiama SWbemServices.ExecMethod per eseguire il metodo StartService . Si noti che è necessario un percorso oggetto perché SWbemServices.ExecMethod non funziona già sull'oggetto, a differenza di SWbemObject.ExecMethod.
Set WbemServices = GetObject("winmgmts:")
Set oService = GetObject("winmgmts:Win32_Service='Alerter'")
Set oPath = GetObject("winmgmts:Win32_Service='Alerter'").Path_
WbemServices.ExecMethod oPath, "StartService"
Il metodo SWbemServices.ExecMethod richiede un percorso oggetto. Se lo script contiene già un oggetto SWbemObject , utilizzare il metodo SWbemObject.ExecMethod .
Esempio
Nell'esempio seguente viene illustrato il metodo ExecMethod . Lo script crea un oggetto Win32_Process che rappresenta un processo che esegue Blocco note. Mostra la configurazione di un oggetto InParameters e come ottenere risultati da un oggetto OutParameters . Per uno script che mostra le stesse operazioni eseguite in modo asincrono, vedere SWbemServices.ExecMethodAsync. Per un esempio dell'uso dell'accesso diretto, vedere Create Method in Class Win32_Process. Per un esempio della stessa operazione usando un oggetto SWbemObject, vedere 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
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Intestazione |
|
Libreria dei tipi |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |