Método SWbemObject.ExecMethod_

O método ExecMethod_ do objeto SWbemObject executa um método exportado por um provedor de métodos.

Esse método é pausado enquanto o método que é encaminhado para o provedor apropriado é executado. As informações e status são retornados. O provedor, e não o WMI, implementa o método.

Para obter uma explicação dessa sintaxe, confira Convenções de documentação para a API de Script.

Sintaxe

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

Parâmetros

strMethodName [in]

Obrigatórios. Nome do método para o objeto.

objwbemInParams [in, opcional]

Este é 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 Construir objetos InParameters e analisar objetos OutParameters.

iFlags [in, opcional]

Reservado e deverá ser zero (0) se for especificado.

objwbemNamedValueSet [in, opcional]

Normalmente, ele é indefinido. Caso contrário, esse será 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.

Retornar valor

Se esse método for bem-sucedido, um objeto SWbemObject retornará. O objeto retornado contém os parâmetros de saída e o valor retornado para o método sendo executado.

Códigos do Erro

Após a conclusão do método ExecMethod_, o objeto Err poderá 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)

Não há memória suficiente 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

Esse método é semelhante a SWbemServices.ExecMethod, mas opera diretamente no objeto cujo método deve ser executado. Por exemplo, o exemplo de código a seguir chama o método de provedor StartService no Win32_Service e usa acesso direto.

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

Esta versão chama SWbemObject.ExecMethod_ para executar o método StartService.

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

Use SWbemObject.ExecMethod_ como uma alternativa ao acesso direto para executar um método de provedor nos casos em que não for possível executar um método diretamente. Por exemplo, você usaria SWbemObject.ExecMethod_ com uma linguagem de script sem suporte para parâmetros de saída se o método tivesse parâmetros de saída. Caso contrário, o meio recomendado para invocar um método será usar o acesso direto.

  • O método SWbemObject.ExecMethod_ pressupõe que o objeto representado por SWbemObject contém o método a ser executado. Em comparação, SWbemServices.ExecMethod requer um caminho de objeto. Use SWbemObject.ExecMethod_ se você já tiver obtido o objeto cujo método deseja executar.

Exemplos

O exemplo a seguir mostra o método ExecMethod. O script cria um objeto Win32_Process que representa um processo que executa o Bloco de Notas. Para obter mais informações sobre um script que ilustra as mesmas operações executadas de modo assíncrono, consulte SWbemObject.ExecMethodAsync_. Para ver um exemplo de como usar o acesso direto, confira Criar método na classe Win32_Process. Para obter um exemplo da mesma operação usando um objeto SWbemServices, consulte 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

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Confira também

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod