Метод 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 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |