PowerShell Script als geplante Aufgabe

Viele Dinge lassen sich mit der gut realisieren. Die Menge an Cmdlets, Modulen und  Snapins bieten einem fast unbegrenzte Möglichkeiten. Doch wie starte ich ein Script automatisiert ohne Doppelklick oder explizitem Aufruf mit der Konsole?

Die Lösung ist  recht einfach! Mit Hilfe der Windows Aufgabenplanung haben sie die Möglichkeit PowerShell Scripte bei verschiedenen Ereignissen zu starten. Die Windows Aufgabenplanung bietet dabei eine Vielzahl an Möglichkeiten die leider nur wenigen bekannt ist. So starten sie zum Beispiel ein Backup-Script auf ein NAS aber nur wenn sie sich auch wirklich in Ihrem Heimnetzwerk befinden. Oder sie starten ein Monitoring des Computers wenn ein bestimmtes Windows Event erzeugt wird.

Zum starten eines PowerShell Scriptes mit der Windows Aufgabenplanung gibt es ein paar kleine Stolpersteine zu beachten. Öffnen sie zuerst die Windows Aufgabenplanung und erstellen sie eine Aufgabe:

powershell-als-task2

Wählen sie im nächsten Schritt einen Namen für die Aufgabe und unter welchem Sicherheitskontext das Script abgearbeitet werden soll. Weiterhin müssen sie unter der Registerkarte “Trigger” wählen bei welcher Bedingung die Aufgabe starten soll. Bedingungen könne Ereignisse, Zeitpläne oder z.B. das An- bzw. das Abmelden eines Benutzers sein.

Der für uns wichtige Punkt finden sie unter dem Menüpunkt “Aktionen”. Fügen sie hier eine neue Aktion hinzu und wählen sie “Programm starten”. Im Textfeld “Programm/Skript” wird aber hier nicht wie zu vermuten ist der Pfad des Scriptes angegeben sondern das eigentlich ausführende Programm die Windows PowerShell.

Unter dem Punkt Argument hinzufügen übergeben dir der PowerShell den Parameter “COMMAND” mit dem wir das eigentliche Script aufrufen.

Update 16.10.2018

In einigen Fällen in Windows Server 2012 R2 und Windows Server 2016 konnte ich feststellen, dass die Aufgabe als erfolgreich ausgeführt markiert war das Skript jedoch nicht ausgeführt wurde. Mit dieser Schreibweise konnte ich dann das Problem umgehen:

powershell-als-task1

Damit das Script erfolgreich abgearbeitet werden kann müssen sie im Vorfeld die Ausführungsrichtlinien für die PowerShell prüfen. Sollte keine Ausführungsrichtlinien definiert sein verweigert die PowerShell ggf. die Ausführung.

Get-ExecutionPolicy

Zum ändern der Ausführungsrichtlinien verwenden sie das Cmdlet “Set-ExecutionPolicy”. Damit sie sich den Konsequenzen  vorher bewusst sind lesen sie doch die Hilfe zu dem Cmdlet.

get-help Set-ExecutionPolicy -Detailed

Zum guten Schluss können sie auf der Registerkarte “Bedingungen” auch noch diverse Bedingungen für die Ausführung festlegen. Von mir gerne genutzt die Bedingung “Nur starten, wenn folgende Netzwerkverbindung verfügbar ist”. Was nützt mir sonst ein Backup-Script auf meinem Notebook wenn ich beim Kunden unterwegs bin.

powershell-als-task3

Viel Erfolg beim Automatisieren!

Dieser Eintrag wurde veröffentlicht in PowerShell und verschlagwortet mit von Alexander Damm. Permanenter Link zum Eintrag.
Alexander Damm

Über Alexander Damm

Seit Windows Server 2000 beschäftige ich mich mit den Betriebssystemen von Microsoft. Dabei liegen meine Schwerpunkte auf Active Directory, Exchange Server, Lync bzw. Skype for Business, Cloud Services wie Office 365 oder Azure sowie Security Analysen, Lösungen und Konzepte. Beruflich agiere ich als System Consultant für die datom GmbH aus Dresden und freue mich auf ihre Anmerkungen oder Anfragen.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.