Share via


Método SWbemObject.ExecMethod_

El método ExecMethod_ del objeto SWbemObject ejecuta un método que exporta un proveedor de métodos.

Este método se pausa mientras se ejecuta el método que se reenvía al proveedor adecuado. Posteriormente, se devuelve la información y el estado. El proveedor, en lugar de WMI, implementa el método.

Para una explicación de esta sintaxis, consulte Convenciones de documentación para la API de scripting.

Sintaxis

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

Parámetros

strMethodName [entrada]

Necesario. Nombre del método para el objeto.

objwbemInParams [entrada, opcional]

Se trata de un objeto SWbemObject que contiene los parámetros de entrada para el método que se ejecuta. De forma predeterminada, este parámetro no está definido. Para más información, consulte Construir objetos InParameters y analizar objetos OutParameters.

iFlags [entrada, opcional]

Reservado y debe establecerse en 0 (cero) si se especifica.

objwbemNamedValueSet [entrada, opcional]

Normalmente no está definido. De lo contrario, se trata de un objeto SWbemNamedValueSet cuyos elementos representan la información de contexto que puede usar el proveedor que atiende la solicitud. Un proveedor que admita o necesite esa información debe documentar los nombres de valor reconocidos, el tipo de datos del valor, los valores permitidos y la semántica.

Valor devuelto

Si el método es correcto, se devuelve un objeto SWbemObject. El objeto devuelto contiene los parámetros de salida y el valor devuelto para el método que se está ejecutando.

Códigos de error

Después de completar el método ExecMethod, el objeto Err puede contener uno de los códigos de error de la lista siguiente.

wbemErrFailed - 2147749889 (0x80041001)

Error no especificado.

wbemErrInvalidClass - 2147749904 (0x80041010)

La clase especificada no era válida.

wbemErrInvalidParameter: 2147749896 (0x80041008)

Un parámetro especificado no es válido.

wbemErrOutOfMemory: 2147749894 (0x80041006)

No hay suficiente memoria para completar la operación.

wbemErrInvalidMethod - 2147749934 (0x8004102E)

El método solicitado no estaba disponible.

wbemErrAccessDenied: 2147749891 (0x80041003)

El usuario actual no estaba autorizado para ejecutar el método.

Comentarios

Este método es similar a SWbemServices.ExecMethod, pero funciona directamente en el objeto cuyo método se va a ejecutar. Por ejemplo, el siguiente ejemplo de código llama al método del proveedor StartService en Win32_Service y usa el acceso directo.

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

Esta versión llama a SWbemObject.ExecMethod_ para ejecutar el método StartService.

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

Use SWbemObject.ExecMethod_ como alternativa al acceso directo para ejecutar un método de proveedor en los casos en los que no es posible ejecutar un método directamente. Por ejemplo, si el método tiene parámetros de salida, usaría el método SWbemObject.ExecMethod_ con un lenguaje de creación de scripts que no admita parámetros de salida. De lo contrario, el medio recomendado para invocar un método es usar el acceso directo.

  • El método SWbemObject.ExecMethod_ supone que el objeto representado por SWbemObject contiene el método que se va a ejecutar. Por el contrario, el método SWbemServices.ExecMethod requiere una ruta de acceso de objeto. Use SWbemObject.ExecMethod_ si ya ha obtenido el objeto cuyo método desea ejecutar.

Ejemplos

En el ejemplo siguiente se muestra el método ExecMethod. El script crea un objeto Win32_Process que representa un proceso que ejecuta el Bloc de notas. Para más información sobre un script que ilustre las mismas operaciones realizadas de forma asincrónica, consulte SWbemObject.ExecMethodAsync_. Para un ejemplo de uso del acceso directo, consulte Creación del método de la clase Win32_Process. Para un ejemplo de la misma operación mediante un 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 Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Consulte también

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod