2014-01-12 28 views
4

反正用vbscript检查服务的状态吗?我想为每个可能的服务状态提供一个功能: LINK 任何帮助都会很棒。我也写一个函数,如果服务被停止检查:如何使用vbscript检查服务状态?

Public Function IsServiceStop(ByVal serviceName) 
    On Error Resume Next 
    Dim objServices, service 
    Set oWmiService = GetObject("winmgmts:\\.\root\cimv2") 
    Set objServices = oWmiService.ExecQuery("Select * from Win32_Service where Name='" & serviceName & "'") 
    For Each service In objServices 
     IsServiceStop = (service.Started = False) 
     Exit Function 
    Next 
    IsServiceStop = True 
    On Error Goto 0 
End Function 

回答

4

如有疑问,请阅读documentation。所有你需要做的是检查服务对象的State属性:

serviceName = "..." 

Set wmi = GetObject("winmgmts://./root/cimv2") 
state = wmi.Get("Win32_Service.Name='" & serviceName & "'").State 
WScript.Echo state 
2
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 

Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service Where Name ='" & strServiceName & "'") 

For Each objService in colListOfServices 

    status = objService.State 

Next 

Reporter.ReportEvent micPass, "startService", "Service status " & status 
1
' Michael Maher 
' 3/10/07 
' Checks if services exists and is running 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='Messenger'") 
nItems = colRunningServices.Count 

' If the collection count is greater than zero the service will exist. 

If nItems > 0 Then 

For Each objItem in colRunningServices 

If objItem.State = "Stopped" Then 
Wscript.Echo objItem.DisplayName & " Installed/Stopped" 
ElseIf objItem.State = "Started" Then 
Wscript.Echo objItem.DisplayName & " Installed/Running" 
End If 
Next 

Else 
Wscript.Echo "Service Not Installed" 
End If 

这里是source