勇芳软件工作室.汉化:  Windows Management Instrumentation > Scripting API for WMI > Scripting API Objects > SWbemObject >

ExecMethod_ Method

Previous pageReturn to chapter overviewNext page

描述

 

SWbemObject对象的ExecMethod_方法执行方法提供者导出的方法。

 

该方法暂停,而转发到相应提供程序的方法执行。然后返回信息和状态。提供者而不是WMI实现该方法。

 

PowerBASIC 语法

 

METHOD ExecMethod_ ( _

BYVAL strMethodName AS WSTRING, _

OPTIONAL BYVAL objWbemInParameters AS IDispatch, _

OPTIONAL BYVAL iFlags AS LONG, _

OPTIONAL BYVAL objWbemNamedValueSet AS IDispatch _

) AS ISWbemObject

 

参数

 

strMethodName

 

需要。对象的方法名称。

 

objWbemInParameters

 

这是一个SWbemObject对象,其中包含正在执行的方法的输入参数。默认情况下,此参数未定义。有关详细信息,请参阅构造参数对象和解析OutParameters对象.

 

iFlags

 

保留,如果指定,必须设置为0(零)。

 

objWbemNamedValueSet

 

通常,它是未定义的。否则,这是一个SWbemNamedValueSet对象,其元素表示正在为请求提供服务的提供者可以使用的上下文信息。支持或要求此类信息的提供者必须记录识别的值名称,值的数据类型,允许的值和语义。

 

返回值

 

如果此方法成功,则SWbemObject对象返回。返回的对象包含正在执行的方法的out参数和返回值。

 

OBJRESULT

 

错误(名称/十进制/十六进制)

含义

wbemErrFailed

-2147217407

&H80041001

未指定错误

wbemErrInvalidClass

-2147217392

&H80041010

指定的类不存在。

wbemErrInvalidParameter

-2147217400

&H80041008

指定了无效参数。

wbemErrOutOfMemory

-2147217402

&H80041006

没有足够的内存来完成操作。

wbemErrInvalidMethod

-2147217362

&H8004102E

请求方法不可用。

wbemErrAccessDenied

-2147217405

0x80041003

当前用户未被授权执行该方法。

 

示例代码

 

以下示例显示ExecMethod方法。脚本创建一个表示运行记事本的进程的Win32_Process对象。

 

'连接到WMI并获取Win32_Process对象。

'这也是一个SWbemObject对象。

设置oProcess = GetObject(“winmgmts:Win32_Process”)

 

'创建SWbemMethod.InParameters

'对象保存所需的输入参数

'为Win32_Process.Create方法调用。

'oProcess.Methods _(“Create”)调用en

'获取定义的类对象

'输入参数正确

'为Win32_Process.Create调用。

'InParameters对象是一个

'SWbemObject对象所以SWbemObject.SpawnInstance_

可以调用它来创建它。

设置oInParams oProcess.Methods = _( “创建”)。_

 InParameters.SpawnInstance_

 

'指定要运行的进程的名称。

oInParams.CommandLine =“Notepad.exe”

设置oOutParams oProcess.ExecMethod = _( “创建” oInParams)

 

如果oOutParams.ReturnValue = 0那么

 wscript.echo“创建方法执行成功”

其他

'如果Create方法执行失败,

'返回一个空的OutParameters对象。

 If IsNull(oOutParams.ReturnValue)Then

   wscript.echo“创建方法无法执行”。

 否则

   wscript.echo“创建方法执行但有错误”_

     &“0x”&hex(oOutParams.ReturnValue)

 End If

万一

 

备注

 

这个方法类似于SWbemServices.ExecMethod,但它直接运行在方法执行的对象上。例如,以下代码示例在Win32_Service中调用StartService提供程序方法,并使用直接访问。

 

oService = GetObject的( “winmgmts:win32_service时=警报”)

状态= oService.StartService()

 

此版本调用SWbemObject.ExecMethod_执行StartService方法。

 

oService = GetObject的( “winmgmts:win32_service时=警报”)

set outParam = process.ExecMethod _(“StartService”)

 

在不可能直接执行方法的情况下,使用SWbemObject.ExecMethod_作为执行提供者方法的直接访问的替代方法。例如,您将使用SWbemObject.ExecMethod_等脚本语言,如JScript,如果您的方法具有参数,则不支持输出参数。否则,调用方法的推荐方法是使用直接访问。

 

·SWbemObject.ExecMethod_方法假设由SWbemObject表示的对象包含要执行的方法。相反,SWbemServices.ExecMethod需要一个对象路径。如果您已经获得了要执行其方法的对象,请使用SWbemObject.ExecMethod_.

 

要求

 

客户

需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95 OSR2及更高版本。

服务器

需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。

类型库

使用Wbemdisp.tlb。

Wbemdisp.inc。

DLL

需要Wbemdisp.dll。