2014-01-10 88 views
0

我需要使用VBScript啓動多個服務。 我編寫了這個腳本來啓動服務,當我運行它時,它不會給出任何錯誤,並且不啓動服務。任何想法可能存在問題?VBScript啓動多個服務

sComputer = "." 
    aTargetSvcs= Array ("ServiceOne" &_ 
    "ServiceTwo" &_ 
    "ServiceThree" &_ 
    "ServiceFour") 
    Set oWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!\\" _ 
    & sComputer & "\root\cimv2") 
    Set cServices = oWMIService.ExecQuery("SELECT * FROM Win32_Service") 
    For Each oService In cServices 
    For Each sTargetSvc In aTargetSvcs 
    If LCase(oService.Name) = LCase(sTargetSvc) Then 
    If oService.State = "Stopped" Then 
    oService.StartService() 
    End If 
    End If 
    Next 
    Next 

回答

0

我終於得到它的工作。我不得不用逗號分隔。這裏的變化和它的工作原理: 然而,我怎樣才能使自己的每一項服務都很容易,因爲我有很多服務,我開始。如果有辦法獨立完成每項服務,閱讀和管理起來會更容易。

sComputer = "." 
aTargetSvcs= Array ("ServiceOne","ServiceTwo","ServiceThree") 
Set oWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!\\" _ 
    & sComputer & "\root\cimv2") 
Set cServices = oWMIService.ExecQuery("SELECT * FROM Win32_Service") 
For Each oService In cServices 
For Each sTargetSvc In aTargetSvcs 
    If LCase(oService.Name) = LCase(sTargetSvc) Then 

    If oService.State <> "Stopped" Then 
     oService.StartService()  
    End If 
End if 
Next 
Next 
+0

,因爲當你將服務名稱連接成一個字符串時,你知道如何編寫多行語句(提示:_),我懷疑你正在拉腿。 –

+0

我真的很喜歡腳本和編程。經過一番研究後,我設法做到了。我會盡量使它分開。 – user3077069

0

你aTargetSvcs是不是你認爲它是 - 包含四個字符串數組 - 但是:

Option Explicit 

Dim aTargetSvcs : aTargetSvcs = Array ("ServiceOne" &_ 
    "ServiceTwo" &_ 
    "ServiceThree" &_ 
    "ServiceFour") 
WScript.Echo UBound(aTargetSvcs) 
WScript.Echo aTargetSvcs(UBound(aTargetSvcs)) 

輸出:

cscript 21036510.vbs 
0 
ServiceOneServiceTwoServiceThreeServiceFour 
+0

謝謝你的幫助。我將如何解決這個問題? – user3077069

+0

@ user3077069 - 創建一個由四個元素組成的數組,而不是將(&)四個字符串連接成一個。你看過Array()函數的文檔(http://msdn.microsoft.com/en-us/library/dsxhtazh%28v=vs.84%29.aspx)? –