how to check service state using vbscript?

23,956

Solution 1

When in doubt, read the documentation. All you need to do is check the State property of the service object:

serviceName = "..."

Set wmi = GetObject("winmgmts://./root/cimv2")
state = wmi.Get("Win32_Service.Name='" & serviceName & "'").State
WScript.Echo state

Solution 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

Solution 3

' 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 

Here is the source

Share:
23,956
Anh Nguyen
Author by

Anh Nguyen

Updated on September 25, 2020

Comments

  • Anh Nguyen
    Anh Nguyen over 3 years

    Is there anyway to check the status of service using vbscript ? I would like to have a function for each possible service state : LINK Any help would be great. I did write a function for checking if service is stopped :

    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