Ich habe aktuell das Problem das der Service beim Abrufen der Fehler in einen Fehler läuft und nichts mehr tut. Jedoch läuft der Dienst in der Rechteverwaltung weiter, so dass es nicht einfach ist einen Ausfall der Funktionalität zu ermitteln und den Service neuzustarten. Ich habe mir daher ein PowerShell Script geschrieben welches das Problem löst und möchte dies mit euch Teilen.
Das Script schreibt in das Anwendungslog von Windows ob der Service restartet wurde oder nicht.
Voraussetzungen
- Installierte PowerShell
- Das ausführen von nicht signierten PowerShell Scripten muss erlaubt sein ( Powershell als Admin starten --> Set-ExecutionPolicy Unrestricted )
- Pfade in meinem Script müssen evtl. angepasst werden.
Script
Ich habe das Script in meinem Setup unter unter "C:\AlarmworkFlow\tools\RestartService.ps1" abgelegt.
Code:
$dir = "C:\ProgramData\OpenFireSource\AlarmWorkflow\Logs\AlarmWorkflowService"
cd $dir
$latest = Get-ChildItem -Path $dir | Sort-Object LastAccessTime -Descending | Select-Object -First 1
if (Select-String -Path $latest.name -pattern FATAL) {
Restart-Service AlarmWorkflowService
eventcreate /ID 1 /SO AWFRestart /L APPLICATION /T ERROR /D "Neustart war notwendig"
}else{
eventcreate /ID 1 /SO AWFRestart /L APPLICATION /T SUCCESS /D "Neustart war nicht notwendig"
}
Scheduled Task
Damit das Script regelmäßig das Logfile Prüft muss ein Scheduled Task eingerichtet werden. Hierzu muss man wieder eine cmd mit Adminrechten Starten.
Code:
SCHTASKS /Create /SC MINUTE /MO 5 /ST 00:05:00 /TN RestartServiceOnFatal /TR "powershell.exe C:\AlarmworkFlow\tools\RestartService.ps1"