Manche Anwendungen verfügen programmseitig nicht über eine Möglichkeit als Dienst integriert zu werden. Auch kann man manche Anwendungen nicht hart via "sc create" als Dienst integrieren, bzw. die Anwendungen reagieren nicht auf die Steuerungsanforderungen.
Eine mögliche Lösung wäre die Verwendung der Aufgabenplanung. Dies funktioniert soweit auch ganz gut. Aber bei Fehlern (z. B. Programmabsturz) wird der Task nicht automatisch neu gestartet (eine Option die man bei Diensten konfigurieren kann). Als Workaround habe ich ein Powershell-Skript geschrieben welches ebenfalls als Task in Intervallen gestartet wird und im Verlauf das Vorhandensein eines definierbaren Prozesses überprüft. Sollte der Prozess nicht ausgeführt werden, wird über ein Aufruf mittels "schtasks" der "beendete Task" neu gestartet. Sobald das Skript feststellt, dass der Prozess nicht mehr aktiv ist, wird eine Benachrichtigung per E-Mail versandt. Wenn der Prozess trotz Neustartversuch nicht startet, wird erneut eine Negativ-Meldung via E-Mail verschickt.
Voraussetzungen - Der "Prüf"-Task muss mit Administrator-Rechten ausgeführt werden (unter Windows Server 2008 R2; leider haben unprivilegierte Benutzer nicht das Recht mittels "schtasks" Tasks zu starten) - Entweder deaktivieren Sie die ExecutionPolicy für Poweshell (http://technet.microsoft.com/en-us/library/hh849812.aspx) oder signieren Sie das Skript
Funktionsweise des Skripts
Das Skript fragt via cmdlet "Get-Process" ab, ob ein definierbarer Prozess aktiv ist.
Wenn der Prozess nicht aktiv ist, wird eine Info-E-Mail mit hoher Priorität an eine definierbare E-Mail-Adresse versandt
Nachfolgend wird ein Neustart des definierbaren Tasks mittels "schtasks" versucht.
Sollte dies scheitern, erfolgt eine weitere Info-Mail mit hoher Priorität.
Sollte der Neustart erfolgreich gewesen sein, erfolgt eine normal priorisierte Benachrichtigung per E-Mail.
Anwendung
Kopieren Sie das Powershell-Skript auf den Client/Server bei dem ein Prozess überwacht werden soll
Erstellen Sie - sofern nicht bereits angelegt - in der Aufgabenplanung eine Aufgabe, welche die eigentliche Anwendung startet, die überwacht werden soll. Notieren Sie sich den Namen des Tasks.
Erstellen Sie eine weitere Aufgabe in der Aufgabenplanung.
Definieren Sie den Benutzer mit dessen Rechten der Task ausgeführt werden soll (Administrator-Rechte)
In dem Reiter "Aktionen" klicken Sie auf "Neu..."
Unter "Programm/Skript:" tragen Sie den Pfad zur Powershell-Anwendung an: Hier: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Unter "Argumente hinzufügen (optional):" tragen Sie -command "PFAD und Dateiname des Powershell-Skripts" ein. Hier: -command "C:\sys\KeepProcessAlive.ps1"
Unter dem Reiter "Trigger" legen Sie ein Intervall fest, wie oft das Skript ausgeführt werden soll bzw. wie oft eine Prüfung der Ausführung des Prozesses geprüft werden soll. (Aufgabe starten bei "Beim Start", Verzögern für: "20 Minuten", Wiederholen jede "10 Minuten", Für die Dauer von: "Sofort".
Klicken Sie auf "OK", Sie werden zur Eingabe des Passworts für den hinterlegten Benutzers gebeten.
Öffnen Sie die heruntergeladene Datei und ändern Sie die Werte der nachfolgenden Variablen entsprechend Ihrer Umgebung:
processname: Hier tragen Sie den Namen des zu überwachenden Prozesses (siehe Taskmanager) ohne die Dateierweiterung an (z. B. für Explorer.exe geben Sie Explorer ein)
smtpsrvname: Hier tragen Sie den DNS-Namen oder die IP-Adresse Ihres E-Mail-Servers ein.
smtpport: Tragen Sie hier den Port für die SMTP-Schnittstelle des E-Mail-Servers ein (Standard: 25)
mailsender: Tragen Sie hier die Absender-E-Mail-Adresse ein.
mailreceiver: Tragen Sie hier die Empfänger-E-Mail-Adresse ein.
starttask: Tragen Sie hier den Namen des Tasks (siehe Punkt 2) ein, welcher gestartet werden soll, sobald der Prozess nicht mehr ausgeführt wird
Ich habe das Skript in einer Windows Server 2008 R2-Umgebung getestet und keine Fehler festgestellt. Trotzdem sollten Sie das Skript zuvor in einer Testumgebung evaluieren. Sollten Sie Fehler entdecken oder Verbesserungsvorschläge haben, würde ich mich über Feedback von Ihnen freuen.
Thomas Windscheif arbeitet bei excITe Consulting und ist langjähriger Berater im Bereich IT-Infrastruktur und Groupware. Sowohl Kleinunternehmen z. B. im Handwerk als auch der größere fertigende Mittelstand gehören zu seinem Projektumfeld. Im Wesentlichen gehören die Planung von Infrastruktur-Migrationen, Cloud-Lösungen (Microsoft 365), Groupware-Umgebungen (z. B. Exchange) und deren Umsetzung zu seinen Aufgaben. Insbesondere im Umfeld hybrider Identitätsumgebungen mit Entra Connect und den Möglichkeiten zur Härtung der IT-Landschaft konnte er in vielen Projekten Erfahrungen sammeln. Neues begeistert ihn aber ebenso und so unterstützt Thomas Windscheif auch bei themenfremden IT-Systemen, überall da wo er helfen kann.
Sein Ziel: Die Mehrwerte der heutigen IT-Lösungen für einfacheres und modernes Arbeiten beim Kunden einbringen.
Login
Sie haben ein ungelöstes Problem in Ihrer Exchange Server oder Microsoft-Infrastruktur? Treten Sie gerne mit mir in Kontakt.
Sowohl bei einfachen Exchange Installationen, als auch bei hochverfügbaren, lastverteilten Mehrstandort-DAG-Topologien mit Loadbalancern
unterstütze ich Sie -auch kurzfristig- sehr gerne.
- Spontaner Administrationsverlust unter Exchange Online - Und wie man es behebt! -
Zweimal in diesem Jahr hatte ich bei Kunden das Phänonem, dass spontan bestimmte Administrationsrechte unter Exchange Online fehlten, trotz der Rollenmitgliedschaft "Globaler Administrator" bzw. "Exchange Administrator".
Aus ungeklärten Gründen waren verschiedene RBAC-Rechte unter Exchange Online für "Organization Management" spontan verschwunden.
Im folgenden Artikel löse ich das Problem mit Skripten und erläutere das Vorgehen