我根据此处和互联网上的示例编写了以下代码:
'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
答案 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秒的睡眠时间。