Método SWbemServices.ExecMethod
O método ExecMethod do objeto SWbemServices executa um método exportado por um provedor de métodos. Esse método bloqueia enquanto o método que é encaminhado para o provedor apropriado é executado. As informações e o status são retornados. O provedor, em vez de WMI, implementa o método.
Esse método é chamado no modo síncrono. Para obter mais informações, consulte Chamar um método.
Para obter uma explicação dessa sintaxe, consulte As Convenções de Documento para a API de Scripts.
Sintaxe
objOutParams = .ExecMethod( _
ByVal strObjectPath, _
ByVal strMethodName, _
[ ByVal objWbemInParams ], _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ] _
)
Parâmetros
-
strObjectPath
-
Obrigatórios. Cadeia de caracteres que contém o caminho do objeto para o qual o método é executado. Para obter mais informações, consulte Descrevendo o local de um objeto WMI.
-
strMethodName
-
Obrigatórios. Nome do método para o objeto.
-
objWbemInParams [opcional]
-
Um objeto SWbemObject que contém os parâmetros de entrada para o método que está sendo executado. Por padrão, esse parâmetro é indefinido. Para obter mais informações, consulte Como construir objetos InParameters e analisar objetos OutParameters.
-
iFlags [opcional]
-
Reservado. Esse valor precisa ser zero.
-
objWbemNamedValueSet [opcional]
-
Normalmente, isso é indefinido. Caso contrário, esse é um objeto SWbemNamedValueSet cujos elementos representam as informações de contexto que podem ser usadas pelo provedor que está atendendo à solicitação. Um provedor que dê suporte ou exija essas informações deve documentar os nomes de valor reconhecidos, o tipo de dados do valor, os valores permitidos e a semântica.
Valor retornado
Se o método for bem-sucedido, um objeto SWbemObject será retornado. O objeto retornado contém os parâmetros out e o valor retornado para o método que está sendo executado.
Códigos do Erro
Após a conclusão do método ExecMethod , o objeto Err pode conter um dos códigos de erro na lista a seguir.
-
wbemErrFailed - 2147749889 (0x80041001)
-
Erro não especificado.
-
wbemErrInvalidClass - 2147749904 (0x80041010)
-
A classe especificada não era válida.
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
Um parâmetro especificado não é válido.
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
Memória insuficiente para concluir a operação.
-
wbemErrInvalidMethod - 2147749934 (0x8004102E)
-
O método solicitado não estava disponível.
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
O usuário atual não estava autorizado a executar o método.
Comentários
Use SWbemServices.ExecMethod como uma alternativa ao acesso direto para executar um método de provedor nos casos em que não é possível executar um método diretamente. O método ExecMethod permite que você obtenha parâmetros de saída, se o provedor for fornecido a eles, com uma linguagem de script que não dá suporte a parâmetros de saída. Caso contrário, o meio recomendado de invocar um método é usar o acesso direto. Para obter mais informações, consulte Manipulando informações de classe e instância.
Por exemplo, o exemplo de código a seguir que chama o método de provedor StartService em Win32_Service usa acesso direto.
oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()
Este exemplo chama SWbemServices.ExecMethod para executar o método StartService . Observe que um caminho de objeto é necessário porque SWbemServices.ExecMethod já não está operando no objeto, ao contrário de 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"
O método SWbemServices.ExecMethod requer um caminho de objeto. Se o script já tiver um objeto SWbemObject , use o método SWbemObject.ExecMethod .
Exemplos
O exemplo a seguir mostra o método ExecMethod . O script cria um objeto Win32_Process que representa um processo que está em execução Bloco de notas. Ele mostra a configuração de um objeto InParameters e como obter resultados de um objeto OutParameters . Para um script que mostra as mesmas operações executadas de forma assíncrona, consulte SWbemServices.ExecMethodAsync. Para obter um exemplo de como usar o acesso direto, consulte Criar Método na classe Win32_Process. Para obter um exemplo da mesma operação usando um SWbemObject, consulte 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
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo com suporte |
Windows Vista |
| Servidor mínimo com suporte |
Windows Server 2008 |
| Cabeçalho |
|
| Biblioteca de tipos |
|
| DLL |
|
| CLSID |
CLSID_SWbemServices |
| IID |
IID_ISWbemServices |