Abgestürzten Dienst automatisch neu starten

Wenn Programme, Drucker oder wichtige Funktionen plötzlich nicht mehr funktionieren ist nicht selten ein beendeter Dienst auf einem Windows Server die Ursache. Gut wäre es, wenn man als Administrator über einen abgestürzten Dienst informiert wird. Noch besser wäre es, wenn der Dienst automatisch neu starten würde.

DQo8cD48YnIvPg0KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzIj48L3NjcmlwdD4NCjwhLS0gVEVDSEZBUSAtIEltIEFydGlrZWwgLS0+DQo8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSINCiAgICAgc3R5bGU9ImRpc3BsYXk6YmxvY2siDQogICAgIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItOTI5NDg1MzEyMDc1NDI3OSINCiAgICAgZGF0YS1hZC1zbG90PSI1MDc3NjQ3MTY5Ig0KICAgICBkYXRhLWFkLWZvcm1hdD0iYXV0byINCiAgICAgZGF0YS1mdWxsLXdpZHRoLXJlc3BvbnNpdmU9InRydWUiPjwvaW5zPg0KPHNjcmlwdD4NCiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsNCjwvc2NyaXB0Pjxici8+PC9wPg0K

E-Mail bei abgestürztem Dienst senden

In einem aktuellen Fall hatte ich das Problem, dass die Druckwarteschlange eines Windows Printservers in unregelmäßigen Abständen beendet wurde. Da dies das Tagesgeschäft extrem beeinflusst hat und die Ursache nicht sofort zu lokalisieren war, habe ich ein Skript eingesetzt, welches mich per E-Mail darüber informiert, dass der Dienst abgestürzt ist. Zudem sollte das Skript den Dienst automatisch neu starten, damit die Mitarbeiter weiter drucken können.

Das eingesetzte Skript muss also prüfen, ob der Dienst gestartet ist und wenn die der Fall ist, den Dienst neu starten und eine E-Mail an einen oder mehrere Empfänger senden.

# Dieses Skript überprüft, ob ein bestimmter Prozess auf dem lokalen Rechner gestartet ist
# Wird der Prozess zum Zeitpunkt der Überprüfung nicht ausgeführt, wird der dazugehörige Dienst  gestartet

$service = "spooler" #Name des Dienstes
$smtpserver = "mail.domain.de"  #E-Mail Server
$sender = "admin@domain.de"   #Absenderadressen
$recipient = "helpdesk@domain.de"   #Empfängeradresse
$Subject = "Der Dienst $service wurde auf Server $env:COMPUTERNAME neu gestartet"   #Betreff der versendeten E-Mail

$CheckService = Get-Service -name $service
If($CheckService.Status -ne "running") {
Start-Service $service
Send-MailMessage -SmtpServer $smtpserver -From $sender -To $recipient -Subject $Subject
}

Dienst automatisch neu starten, wenn dieser beendet ist

Das obige Skript prüft den Status des in der Variable $service angegebene Dienstes. Ist dieser nicht gestartet, wird er gestartet und eine E-Mail generiert. Das Powershell Skript wird dann in die Windows Aufgabenplanung integriert und kann dort z.B. minütlich laufen. Dadurch kann sichergestellt werden, dass der Dienst zeitnah neu gestartet wird, sobald er beendet wurde.

Dienst automatisch neu starten, wenn beendet
Einen Dienst automatisch neu starten und per E-Mail darüber informiert werden.

Natürlich wird dadurch die Ursache nicht beseitigt. Man kann aber unter Umständen etwas Zeit und Ruhe gewinnen, die man benötigt, um nach den Gründen der Abstürze zu suchen.

Ebenfalls interessant:

Dieser Artikel ist wie alle anderen auf dieser Seite kostenlos für Dich und ich hoffe, ich konnte Dir weiterhelfen. Wer möchte, kann diesem Blog eine kleine Aufmerksamkeit in Form einer kleinen Spende (PayPal) oder über die Amazon Wunschliste zukommen lassen.

Schreibe einen Kommentar