使用VBScript如何检查打印机池服务是否已启动,如果未启动则启动它?

3

我想使用VBScript来检查打印池服务是否已启动,如果没有启动,则启动它。下面的代码检查服务状态,但我需要一些帮助修改它,以便我可以检查它是否已启动。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery _
    ("Select * from Win32_Service")
For Each objService in colRunningServices 
    Wscript.Echo objService.DisplayName  & VbTab & objService.State
Next

非常感谢 Steven

3个回答

5

可以试试这个命令,如果它没有运行,它会启动它。无需事先检查。

Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run "NET START spooler", 1, false

毫无疑问,不需要调用外部命令来执行。请查看我的回答。 - ghostdog74
1
当然没有理由不这样做。为什么要重复造轮子呢? - JohnFx

1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery _
    ("select State from Win32_Service where Name = 'Spooler'")

For Each objService in colRunningServices
    If objService.State <> "Running" Then
        errReturn = objService.StartService()
    End If
Next

请注意,您还可以使用objService.started来检查它是否已启动。


0

仅供完整性考虑,这里提供了一种使用 Shell.Application 对象的替代方案:

Const strServiceName = "Spooler"

Set oShell = CreateObject("Shell.Application")
If Not oShell.IsServiceRunning(strServiceName) Then
  oShell.ServiceStart strServiceName, False
End If

或者简单地说:

Set oShell = CreateObject("Shell.Application")
oShell.ServiceStart "Spooler", False    ''# This returns False if the service is already running

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接