Dank der WMI-Schnittstelle ist es möglich ein Skript zu schreiben, das auf einem remote System einen Service überwacht und bei Bedarf auch neu starten oder stoppen kann.
Dim objWMIService
Dim lServices
Dim strService: strService = "MeinService"
Dim strComputer: strComputer ="."
Set objWMIService = objSWbemLocator.ConnectServer("10.0.200.33", "root\cimv2", _
"Benutzer", _
"Passwort", _
"","")
Set lServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='" & strService & "'")
For Each objService In lServices
Select Case objService.State
case "Stopped" 'start service
errReturn = objService.StartService()
case "Paused" 'resume service
errReturn = objService.ResumeService()
case "Running" 'nothing todo
wscript.echo objService.Name & " with ID " & objService.ProcessId & " is already started."
End Select
Next
Anmerkung zu den Codezeilen:
- 03 Achtung: bei der Definition des Servicenamen handelt es sich nicht um den Anzeigenamen sondern um den Dienstnamen
- 06 Remote WMI Service initiieren (auch lokaler möglich)
- 12 Mit einer WQL Abfrage wird der gesuchte Dienst selektiert um dann mit diesem Arbeiten zu können
- 14 Status des Dienstes abfragen (Mögliche Werte sind: „Stopped“, „Start Pending“, „Stop Pending“, „Running“, „Continue Pending“, „Pause Pending“, „Paused“, „Unknown“)
Nützliche Links:
Managing Windows with WMI
WMI Query Language (WQL)
Win32_Service Class Proberties
WMI Scripting Primer: Part 1
WMI Scripting Primer: Part 2
WMI Scripting Primer: Part 3