如何捕获WMI错误

时间:2011-03-24 01:11:07

标签: exception-handling vbscript wmi

如果服务正在运行,我想使用wmi来停止服务。下面是vbscript中的代码。

问题是,由于各种原因,GetObject,startService和ExecuteQuery命令可能会出错。例如,在发出“stopService”命令之后,服务的状态可能变为“停止”,而不是“停止”,并且脚本在那里停留相当长的一段时间。有时会返回错误消息,例如“RPC不可用”。似乎没有捕获异常机制内置到vbscript中。我在网上看到的大多数例子从未考虑过这种情况。有没有人知道有一种很好的方法来捕获这种错误,并强制执行这些命令(注意:不是服务本身)中止?

 Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where Name = '" & strService & "'")

For Each objService in colServiceList

If objService.State = "Running" Then

strObjService.StopService
Wscript.Sleep 2000

myColServiceList = myObjWMIService.ExecQuery _
        ("Select * from Win32_Service where Name = '" & strService & "'")

    For each myObjService In myColServiceList
        objState = myObjService.State

    End If
End If

[/代码]

1 个答案:

答案 0 :(得分:3)

您必须阅读Microsoft To Err Is VBScript中的这篇文章,在此链接中,您将找到使用WMI和VbScript处理错误所必须知道的所有内容。