VBScript启动多个服务

VBScript启动多个服务,vbscript,Vbscript,我需要使用VBScript启动多个服务。 我编写这个脚本是为了启动服务,当我运行它时,它不会给出任何错误,也不会启动服务。你知道问题出在哪里吗 sComputer = "." aTargetSvcs= Array ("ServiceOne" &_ "ServiceTwo" &_ "ServiceThree" &_ "ServiceFour") Set oWMIService = GetObject("winmgmts:"

我需要使用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

您的AtargetSvc不是您所认为的—一个包含四个字符串的数组—而是:

Option Explicit

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

cscript 21036510.vbs
0
ServiceOneServiceTwoServiceThreeServiceFour

我终于成功了。我不得不用逗号分隔。在这里,改变是有效的: 然而,我怎样才能使每项服务在自己的线路上变得容易,因为我有很多服务,我启动。如果有一种方法可以让每个服务独立运行,那么阅读和管理就会容易得多

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
scocomputer=“”
aTargetSvcs=数组(“服务一”、“服务二”、“服务三”)
设置oWMIService=GetObject(“winmgmts:&”{impersonationlevel=impersonate}!\\”_
&SCOComputer&“\root\cimv2”)
设置cServices=oWMIService.ExecQuery(“从Win32_服务中选择*)
对于cServices中的每个oService
对于AtargetSvc中的每个sTargetSvc
如果LCase(oService.Name)=LCase(sTargetSvc),则
如果oService.State“已停止”,则
oService.StartService()
如果结束
如果结束
下一个
下一个

谢谢您的帮助。如何解决这个问题?@user3077069-通过创建一个包含四个元素的数组,而不是将四个字符串串联成一个。您确实看过Array()函数()的文档了吗?因为您知道如何在将服务名称连接到字符串中时编写多行语句(提示:),所以我怀疑您是在开玩笑。一般来说,我对脚本编写和编程都是新手。经过一些研究,我设法使它发挥了作用。我将尝试在单独的线路上进行。