描述
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。 |


