Prozesse zeitgesteuert beenden per PowerShell

Mit Hilfe der Aufgabenplanung und der Windows PowerShell lassen sich Dienste und Prozesse zeitgesteuert beenden.



PowerShell und Aufgabenplanung – Prozesse zeitgesteuert beenden

Mit Hilfe der PowerShell ist es nicht nur möglich Rollen und Features eines Windows Servers zu verwalten, es lassen sich auch viele praktische Hilfsmittel für die tägliche Administration damit erstellen. Eine Funktion, die mir bereits oft weiter geholfen hat, ist die Möglichkeit, Windows Prozesse zeitgesteuert beenden zu können.

Gründe, weshalb ein bestimmter Prozess oder Dienst beendet werden muss, gibt es zuhauf: Beispielsweise das Durchführen einer konsistenten Datensicherung oder der Neustart eines Dienstes zu einer bestimmten Uhrzeit.

Ein immer wiederkehrender Fall aus meiner Praxis ist z.B. die Anwendung CodeTwo Email Signatures in Kombination mit einem Windows Terminalserver. Der Client, welcher die Signaturen zuverlässig in die Benutzerprofile importiert, kann auf dem Terminalserver nur von einem Benutzer gleichzeitig ausgeführt werden. Bedeutet: derjenige, der sich zuerst anmeldet, erhält die aktuellen Signaturänderungen. Alle anderen nicht, weil der Prozess bereits in Anwendung ist. Hier helfe ich mir damit, den Prozess mit der PowerShell zeitgesteuert zu beenden. Anschließend ist dieser für die nächsten Anmeldungen wieder verfügbar.

Der Befehl zum Beenden eines Prozesses lautet: Stop-Process. Das vollständige Kommando zum Beenden (z.B. von Microsoft Outlook) lautet:

Stop-Process -Name Outlook

In Kombination mit der Windows Aufgabenplanung sieht das Ganze dann folgendermaßen aus:

Prozesse zeitgesteuert beenden per PowerShell
Mit der Windows Aufgabenplanung ist es möglich, PowerShell Befehle zeit- oder ereignisgesteuert auszuführen.

Auf diese Weise lassen sich Prozesse auf die Sekunde genau beenden. Im obigen Beispiel beende ich den Email Signatures zum Beispiel automatisch mit einer Minute Verzögerung bei jeder Benutzeranmeldung. Diese Zeitspanne reicht aus, um die Signaturen zu aktualisieren ehe der Prozess wieder beendet wird.

Sollen Prozesse anderer Benutzer beendet werden, ist der Parameter -force hinzuzufügen. Dadurch wird die Rückfrage vor dem Beenden unterdrückt. Fehlt dieser Parameter, wird die Aufgabe nicht beendet, da die PowerShell im Hintergrund auf eine Eingabe wartet.

Der vollständige Befehl würde dann lauten:

Stop-Process -Name Outlook -force

Um Prozesse zeitgesteuert beenden zu können, bedarf es also keiner komplizierten Skripte. Das Starten von Prozessen ist im Übrigen mit Start-Process möglich.

Wichtig: Mit dem obigen Beispiel werden ALLE Prozesse mit dem angegebenen Namen beendet. Auf Systemen, an denen mehrere Benutzer angemeldet sind, würden die gleichnamigen Prozesse aller aktiven Benutzer beendet werden. Hier empfiehlt es sich, den Befehl mit dem Parameter -ID statt -Name zu verwenden und die entsprechende Prozess-ID anzugeben.

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