' From the book "Active Directory, Third Edition"
' ISBN: 0-596-10173-2

strService = "spooler"
strComputer = "."

WScript.Echo "Restarting " & strService & "..."

' Stop dependent services
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objServiceList = objWMI.ExecQuery("Associators of " _
& "{Win32_Service.Name='" & strService & "'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For Each objService In objServiceList
WScript.Echo " Stopping " & objService.Name
objService.StopService()
Next
WScript.Sleep 10000 ' Pause to allow services to stop
' Stop target service
Set objService = objWMI.Get("Win32_Service.Name='" & strService & "'")
WScript.Echo " Stopping " & objService.Name
objService.StopService()
WScript.Sleep 10000 ' Pause to allow service to stop

' Start target service
Set objService = objWMI.Get("Win32_Service.Name='" & strService & "'")
WScript.Echo " Starting " & objService.Name
objService.StartService()
WScript.Sleep 10000 ' Pause to allow service to start

' Start dependent services
Set objServiceList = objWMI.ExecQuery("Associators of " _
& "{Win32_Service.Name='" & strService & "'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For Each objService In objServiceList
WScript.Echo " Starting " & objService.Name
objService.StartService()
Next
WScript.Echo "The script has completed successfully."