2011-12-24 61 views
1

我已經寫了下面的代碼基於這裏找到例子,在互聯網:的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,產地SWbemObjectEx相關線路objService.StartService()

+0

objService變量未定義。只需在「Do」和「For Each」條件之間添加Dim objService – Michalis 2011-12-24 16:04:16

+0

謝謝Michalis!是的,你的建議奏效了。現在腳本運行,但它似乎無法運行我所期望的服務。也許它與服務EaseUS Agent的名稱有關,它在單詞之間有一個空格。這可能是問題嗎?也許objService.StartService()行對空格字符有問題。 – Aeolis 2011-12-24 17:24:13

回答

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秒的睡眠時間。

相關問題