首页 文章

VBScript启动多个服务

提问于
浏览
0

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

2 回答

  • 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

    我终于开始工作了 . 我不得不使用逗号分隔 . 这里的变化和它的工作原理:但是,如何让每个服务在自己的行上变得容易,因为我有很多我启动的服务 . 如果有一种方法可以自己制作每项服务,那么阅读和管理就会容易得多 .

    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
    

相关问题