VBScript - 尝试启动服务,直到找到它的运行实例

时间:2011-12-24 15:36:37

标签: windows service vbscript

我根据此处和互联网上的示例编写了以下代码:

'Option Explicit
Dim objWMIService, objWMIService2, processItems, ProcessName, ServiceName, colListOfServices
ProcessName = "Agent.exe"
ServiceName = "EaseUS Agent"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set processItems = objWMIService.ExecQuery("Select * from Win32_Process where Name='"  & ProcessName & "'")
Set objWMIService2 = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService2.ExecQuery ("Select * from Win32_Service Where Name ='" & ServiceName & "'")
'Wscript.Echo ProcessName & ": " & processItems.Count

Do
'Start Service
For Each objService in colListOfServices
     objService.StartService()
Next
Loop While processItems.Count = 0

但它不起作用。你能帮我找到错在哪里吗?如果我启用Option Explicit命令,脚本会说:

  

未定义objService。

如果我对Option Explicit命令发表评论,则会出现提供商失败,代码80041004,与行objService.StartService()相关的源SWbemObjectEx

1 个答案:

答案 0 :(得分:0)

可能是一个愚蠢的问题,但用户是否具有启动此服务所需的权限?

尝试以管理员身份运行.vbs。

代码本身没有任何问题,StartService没有服务名称中的空格问题。

我自己进行了以下修改测试:

While processItems.Count = 0
'Start Service
For Each objService in colListOfServices
    Wscript.Echo objService.Name
    objService.StartService
Next
WScript.Sleep 5000
Wend

objService.Name将允许您查看您尝试启动的服务的名称。这应该有一个值。

我还试图让服务有一段时间开始之间增加了5秒的睡眠时间。