nathalem
Goto Top

Programm reagiert nicht - per Powershell neu starten?

Hallo liebe Administratoren,

wir haben auf verschiedenen Windows Servern Anwendungen laufen die, die Gewohnheit haben sich ab und zu aufzuhängen.
Bedeutet: Ich höre das etwas nicht funktioniert, schalte mich auf den Betreffenden Server und finde die Betreffende Anwendung hinter einem Windows Fehlerfenster vor.
Ich wollte nun fragen ob es eine Möglichkeit gibt (möglichst über Powershell) ein Script zu schreiben das über eine Schleife prüft ob eine Anwendung noch vollständig läuft (eine Anwendung die sich aufgehängt hat wird ja im Taskmanager immernoch angezeigt) und diese im Fehlerfall komplett schließt und neu öffnet.
Unter Linux gibt es meine ich einen Begriff für so etwas aber ich komme nicht ganz darauf.

Content-ID: 265164

Url: https://administrator.de/contentid/265164

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

colinardo
Lösung colinardo 04.03.2015 aktualisiert um 19:46:47 Uhr
Goto Top
Hallo Nathalem,
z.B. hiermit ...
# Pfad zur Anwendung die überwacht werden soll
$appPath = "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE"  
# Wartezeit zwischen den Überprüfungen (s)
$wait = 10

while ($true){
    # Prozessreferenz holen
    $proc = (Get-Process ([System.IO.Path]::GetFileNameWithoutExtension($appPath)) -EA SilentlyContinue)
    # Wenn Prozess existiert und nicht reagiert ...
    if ($proc -ne $null -and !$proc.Responding){
            write-host "Anwendung reagiert nicht, versuche einen Neustart" -ForegroundColor Red  
            # kille Prozess
            Stop-Process $proc -Force
            # starte Prozess neu
            Start-Process $appPath
    }
    write-host "Sleeping $wait seconds..."  
    sleep $wait
}
Kannst du ganz einfach testen indem du z.B. in Excel ein Makro ala
Sub hang_excel()
    While true
    Wend
End Sub
startest während dass Powershell-Script läuft. Excel sollte dann neu gestartet werden während es in der Endlosschleife hängt.

Grüße Uwe
Nathalem
Nathalem 04.03.2015 um 19:22:30 Uhr
Goto Top
funktionier super, danke.