VBScript Scripting Techniques > Processes & Services > Services
Win32_Service | |
---|---|
VBScript Code: | |
RestartService "Messenger", 0 Sub RestartService( myService, blnQuiet ) ' This subroutine restarts a service ' Arguments: ' myService use the service's DisplayName ' blnQuiet if False, the state of the service is displayed ' every second during the restart procedure ' ' Written by Rob van der Woude ' http://www.robvanderwoude.com ' Standard housekeeping Dim colServices, colServicesTest, objService Dim objServiceTest, objWMIService, strQuery, strTest ' Create a WMI object Set objWMIService = GetObject( "winmgmts:\\.\root\CIMV2" ) ' Query the services for "our" service strQuery = "SELECT * FROM Win32_Service WHERE DisplayName='" & myService & "'" Set colServices = objWMIService.ExecQuery( strQuery, "WQL", 48 ) ' Loop through the "collection" of returned services For Each objService In colServices ' See if we need to tell the user we're going to stop the service If Not blnQuiet Then WScript.Echo "Stopping " & myService End If ' Stop the service objService.StopService ' Wait until the service is stopped Do Until strTest = "Stopped" ' Create a new object for our service; this work-around is required ' since otherwise the service's state information isn't properly updated Set colServicesTest = objWMIService.ExecQuery( strQuery, "WQL", 48 ) ' Loop through the "collection" of returned services For Each objServiceTest In colServicesTest ' Check the service's state strTest = objServiceTest.State ' See if we need to show the progress If Not blnQuiet Then WScript.Echo "State: " & strTest End If ' Wait 1 second WScript.Sleep 1000 Next ' Clear the temporary object Set colServicesTest = Nothing Loop ' See if we need to tell the user we're going to (re)start the service If Not blnQuiet Then WScript.Echo "Starting " & myService End If ' Start the service objService.StartService ' Wait until the service is running again Do Until strTest = "Running" ' Create a new object for our service; this work-around is required ' since otherwise the service's state information isn't properly updated Set colServicesTest = objWMIService.ExecQuery( strQuery, "WQL", 48 ) ' Loop through the "collection" of returned services For Each objServiceTest In colServicesTest ' Check the service's state strTest = objServiceTest.State ' See if we need to show the progress If Not blnQuiet Then WScript.Echo "State: " & strTest End If ' Wait 1 second WScript.Sleep 1000 Next ' Clear the temporary object Set colServicesTest = Nothing Loop Next End Sub |
|
Requirements: | |
Windows version: | NT 4, 2000, XP, Server 2003, or Vista |
Network: | any |
Client software: | WMI CORE 1.5 for Windows NT 4 |
Script Engine: | WSH (replace the WScript.Echo and WScript.Sleep lines to make this work in HTAs) |
Summarized: | Works in Windows NT 4 or later, requires WMI CORE 1.5 for Windows NT 4. Won't work in Windows 95, 98 or ME. |
[Back to the top of this page] |
page last modified: 2016-09-19; loaded in 0.0022 seconds