Метод SWbemObject.ExecMethod_

Метод ExecMethod_ объекта SWbemObject выполняет метод, экспортируемый поставщиком метода.

Этот метод приостанавливается при выполнении метода, переадресованного соответствующему поставщику. Затем возвращаются сведения и состояние. Поставщик, а не WMI реализует метод .

Описание этого синтаксиса см. в разделе Соглашения о документах для API сценариев.

Синтаксис

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

Параметры

strMethodName [in]

Обязательный. Имя метода для объекта .

objwbemInParams [in, необязательно]

Это объект SWbemObject , содержащий входные параметры для выполняемого метода. По умолчанию этот параметр не определен. Дополнительные сведения см. в разделах Создание объектов InParameters и Анализ объектов OutParameters.

iFlags [in, необязательный]

Зарезервировано и должно иметь значение 0 (ноль), если указано.

objwbemNamedValueSet [in, необязательный]

Как правило, он не определен. В противном случае это объект SWbemNamedValueSet , элементы которого представляют сведения контекста, которые могут использоваться поставщиком, обслуживающим запрос. Поставщик, поддерживающий или требующий таких сведений, должен документировать имена распознаваемых значений, тип данных значения, допустимые значения и семантику.

Возвращаемое значение

Если этот метод выполнен успешно, возвращается объект SWbemObject . Возвращаемый объект содержит параметры out и возвращаемое значение для выполняемого метода.

Коды ошибок

После завершения метода ExecMethod_ объект Err может содержать один из кодов ошибок в следующем списке.

wbemErrFailed — 2147749889 (0x80041001)

Незаданная ошибка.

wbemErrInvalidClass — 2147749904 (0x80041010)

Указанный класс недопустим.

wbemErrInvalidParameter — 2147749896 (0x80041008)

Указанный параметр недопустим.

wbemErrOutOfMemory — 2147749894 (0x80041006)

Недостаточно памяти для завершения операции.

wbemErrInvalidMethod — 2147749934 (0x8004102E)

Запрошенный метод недоступен.

wbemErrAccessDenied — 2147749891 (0x80041003)

Текущий пользователь не был авторизован для выполнения метода .

Комментарии

Этот метод аналогичен SWbemServices.ExecMethod, но он работает непосредственно с объектом, метод которого должен быть выполнен. Например, в следующем примере кода вызывается метод поставщика StartService в Win32_Service и используется прямой доступ.

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

Эта версия вызывает SWbemObject.ExecMethod_ для выполнения метода StartService .

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

Используйте SWbemObject.ExecMethod_ в качестве альтернативы прямому доступу для выполнения метода поставщика в случаях, когда невозможно выполнить метод напрямую. Например, можно использовать SWbemObject.ExecMethod_ с языком сценариев, который не поддерживает выходные параметры, если в методе есть параметры out. В противном случае рекомендуется использовать прямой доступ.

  • Метод SWbemObject.ExecMethod_ предполагает, что объект, представленный SWbemObject , содержит метод для выполнения. Для SWbemServices.ExecMethod , напротив, требуется путь к объекту. Используйте SWbemObject.ExecMethod_ , если вы уже получили объект, метод которого требуется выполнить.

Примеры

В следующем примере показан метод ExecMethod . Скрипт создает объект Win32_Process , представляющий процесс, выполняющийся в Блокноте. Дополнительные сведения о скрипте, иллюстрирующих те же операции, выполняемые асинхронно, см. в разделе SWbemObject.ExecMethodAsync_. Пример использования прямого доступа см. в разделе Создание метода в классе Win32_Process . Пример той же операции с использованием объекта SWbemServices см. в разделе 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

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

См. также раздел

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod