Solved

getting service status

Posted on 2009-07-01
3
1,788 Views
Last Modified: 2012-08-13
This is more of a DOS question than a vbscript question, but it's for a vbscript app.
Is there a way to get only the STATE of a service rather than a list of all the statuses for a service, then get these into vbscript?
I haven't tried this code below, because it's doesn't seem acceptable to loop through the output until you find the word "RUNNING" in the output, but I may have to do something like this. So it's not a afunction yet.
It gives you and idea of what I'm doing.
This is the output that I would be working with, and the line that I specifically want to get is"
        STATE              : 4  RUNNING
I don't know how to get that, I know how to get the below:
SERVICE_NAME: SMTPSVC
DISPLAY_NAME: Simple Mail Transfer Protocol (SMTP)
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE,PAUSABLE,ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0
        SERVICE_EXIT_CODE  : 0
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Sub SMTP_STATUS

' this is a subroutine, but could be a function that returns the SMPT status

Dim strCommand

Dim intSMPTStatus

Dim intDosError

' the DOS command will be to query the SMTPSVC status

' I could not figure out how to get the 

strCommand = "CMD /C SC QUERY SMTPSVC"

intStyle = 10

intDOSError = 0

intSMTPStatus = 0

Dim fldTemp, strTempName
 

     set fsoRun = CreateObject("Scripting.FileSystemObject")

     Set fldTemp = fsoRun.GetSpecialFolder(TEMP_FOLDER)

     strTempName = fldTemp.Path & "\" & fsoRun.GetTempName

     Dim WshShell

     Set WshShell = CreateObject("Wscript.Shell")

     Return = WshShell.Run(strCommand & " >" & strTempName, intStyle, True )

     'Get the output from the command

     Dim filOutput

     Set filOutput = fsoRun.OpenTextFile(strTempName, FOR_READING)

     While Not filOutput.AtEndOfStream

          strOutput = filOutput.ReadLine

          objEntry.WriteLine (strOutput)

	' This is where I would like to get the SMTP status

	If InStr(strOutput,"STATE") > 0 And InStr(strOutput,"RUNNING") > 0 Then

		' If the status of SMPTSVC is running then flag it as 1

		intSMPTStatus = 1

	End If

     Wend

     filOutput.Close

intDOSError = Return

     'Delete the temporary file

     fsoRun.DeleteFile strTempName

Set WshShell = Nothing     

End Sub

Open in new window

0
Comment
Question by:harmono
  • 2
3 Comments
 
LVL 1

Author Comment

by:harmono
ID: 24757468
0
 
LVL 65

Accepted Solution

by:
RobSampson earned 500 total points
ID: 24761670
Hi there. You can try using this VBS function to retrieve the State of a service.  You need to call the function using

strComputer = "."
strServiceName = "browser"
strState = Get_Service_State(strComputer, strServiceName)

Regards,

Rob.

Function Get_Service_State(strComputer, strServiceName)

	Const wbemFlagReturnImmediately = &h10

	Const wbemFlagForwardOnly = &h20

	On Error Resume Next

	Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

	Set colItems = objWMIService.ExecQuery("SELECT State FROM Win32_Service WHERE Name='" & strServiceName & "'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

	For Each objItem In colItems

		strState = objItem.State

	Next

	If Err.Number <> 0 Then

		strState = "N/A"

		Err.Clear

	End If

	On Error GoTo 0

	Get_Service_State = strState

End Function

Open in new window

0
 
LVL 1

Author Closing Comment

by:harmono
ID: 31598876
We decided to move this project to Visual Basic 2008, but I might re-visit this later. Thanks.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now