Die Aufgabeplanung mit der Windows PowerShell verwalten!

Windows Aufgaben lassen sich leicht mit der Windows PowerShell steueren!

Überblick

Die Windows Aufgabenplanung ist eines der zentralen Elemente, wenn es um das automatisieren von Aufgaben im  Windows Betriebssystem geht. Neben der Konfiguration der Aufgabenplanung über die grafische Oberfläche, gibt es auch die Möglichkeit die einzelnen Aufgaben bzw. Tasks mit der neuen Windows PowerShell zu verwalten. Wie in den letzten Beiträgen zur Windows PowerShellFestplatten einbinden, Netzwerkverbindungen testen, etc, – bietet diese viel mehr Möglichkeiten, als die grafische Oberfläche. Aber nicht nur das, den wenn man einen Server Core zu verwalten hat, so gibt es keine andere Möglichkeit außer der Konsole, also der cmd oder der PowerShell. Abgesehen davon drängt Microsoft immer mehr darauf, das man sich mit der Windows PowerShell beschäftigt. In diesem Artikel habe ich mich mal mit der Aufgabenplanung im Zusammenhang mit der Windows PowerShell beschäftigt und möchte euch meine Ergebnisse präsentieren.

Analyse der vorhandenen Aufgaben

Wenn man sein Windows 10 (Anzeige)* frisch installiert hat, so sind auf dem  System selber schon einige Aufgabe vorhanden. Natürlich kommen im Laufe der Zeit immer mehr dazu. Für die Anzeige der Aufgaben verwendet man das Cmdlet Get-ScheduledTask. Der folgende Screenshot zeigt alle Aufgaben, jedoch nicht sortiert nach deren Status, aber mit dem Namen und deren Pfad. Der Pfad (TaskPath) gibt Auskunft über die Anordnung (Baumstruktur) bei der Aufgabenverwaltung. Verwendet wird diese, wenn man mehr Details zu einer Aufgabe auslesen möchte. Im folgenden Screenshot wurde die Aufgaben eines frisch installierten Windows Server 2016 Technical Preview 4 aufgerufen.

Get-ScheduledTask
Windows Aufgabenplanung mit der PowerShell verwalten: Get-ScheduledTask
Windows Aufgabenplanung mit der PowerShell verwalten: Get-ScheduledTask

Natürlich ist es nun sinnvoller, wenn man die Aufgaben etwas sortiert. Am besten nach deren Status, wofür es drei verschiedene Optionen gibt. Ready, Running und Disabled. Das erste Beispiel liefert alle laufenden Aufgaben und das zweite Beispiel alle Aufgaben deren Pfad mit Windows* beginnt. Der Stern steht dabei für eine WildCard, also einem beliebigen Zeichen.

Beispiel 1:

Get-ScheduledTask | Where-Object state -eq running
Windows Aufgabenplanung mit der PowerShell verwalten - Laufende Aufgaben zeigen
Windows Aufgabenplanung mit der PowerShell verwalten – Laufende Aufgaben zeigen

Beispiel 2:

Get-ScheduledTask -TaskPath \Microsoft\Windows\Windows*
Windows Aufgabenplanung mit der PowerShell verwalten - Bestimmte Aufgaben zeigen
Windows Aufgabenplanung mit der PowerShell verwalten – Bestimmte Aufgaben zeigen

Details zu einer Aufgabe auslesen

Oft möchte man von einer einzelnen Aufgabe mehr Informationen erhalten. Auch hierfür gibt es ein Cmdlet. Dieses hat den Namen: Get-ScheduledTaskInfo. Natürlich braucht dieses Cmdlet dann auch einen Parameter. Als Parameter könnte man jetzt den Namen des Tasks (Taskname) oder den Pfad des Tasks (TaskPath) übergeben. Am einfachsten ist es allerdings, wenn man sich per Get-ScheduledTask die Aufgabe anzeigen lässt und diese dann mittels der PowerShell Pipe weiterverarbeitet. Das folgende Beispiel soll das verdeutlichen. Als erstes wird der entsprechende Task ermitteln. (Hier Windows Defender Cleanup). Anschließend wird dieser mittels Pipe an Get-ScheduledTaskInfo weitergeleitet, womit nun die gewünschten Informationen ausgegeben werden.

Get-ScheduledTask -TaskName "Windows Defender Cleanup" | Get-ScheduledTaskInfo

 

Windows Aufgabenplanung mit der PowerShell verwalten - Details einer Aufgabe anzeigen
Windows Aufgabenplanung mit der PowerShell verwalten – Details einer Aufgabe anzeigen

 

Nachdem man wie oben ersichtlich detaillierte Informationen erhält, kann man diese auch nach bestimmten Kriterien filtern, um evtl. weitere Aufgaben bzw. Tätigkeiten anzuhängen. Vorstellbar wäre jetzt z.B. dass man sich vom Windows Defender alle Aufgaben ausgeben lässt, die nicht durchgeführt wurden. Zu finden sind diese unter dem Namen: NumberOfMissedRuns.

Get-ScheduledTask -TaskName "Windows Defender Cleanup" | Get-ScheduledTaskInfo | Where NumberOfMissedRuns -gt 0

Übrigens ist hier wieder sehr deutlich zu erkennen, wie sinnvoll und einfach es ist, wenn man die Windows PowerShell Pipe geschickt einsetzt, denn dadurch erhält man genau die Information, nach welcher man sucht.

Aufgaben deaktivieren, stoppen, starten und  löschen

Wenn man jetzt eine bestimmte geplante Aufgabe deaktivieren möchte, so muss man prinzipiell nur das obige Konstrukt verwenden und das Cmdlet Disable-ScheduledTask anhängen. Dies würde für den Windows Defender Task folgendermaßen aussehen:

Get-ScheduledTask -TaskName "Windows Defender Cleanup" | Get-ScheduledTaskInfo | Where NumberOfMissedRuns -gt 0 | Disable-ScheduledTask

Neben dem einfachen deaktivieren ist es genauso möglich Aufgaben zu stoppen, starten oder löschen. Je nachdem gibt es ein entsprechendes Cmdlet, welche durch ihren Namen natürlich selbsterklärend sind. Enable-ScheduledTask, Stop-ScheduledTask und Start-ScheduledTask. Im folgendem Beispiel sollen alle laufenden Aufgaben gestoppt werden. Mit einer kurzen Abfrage und Pipe Weiterleitung ist das schnell erledigt.

Get-ScheduledTask | Where-Object State -eq running | Stop-ScheduledTask

Eine nachfolgende Überprüfung mit der folgende Abfrage, würde jetzt kein Ergebnis mehr liefern. Somit sind alle Aufgaben gestoppt.

Get-ScheduledTask | Where-Object state -eq running

Zu guter letzt gibt es auch noch die Möglichkeit eine Aufgabe komplett zu löschen. Diese gelingt, indem man das Cmdlet Unregister-ScheduledTask verwendet.

Fazit

Zur Verwaltung der geplanten Aufgaben gibt es in der Windows PowerShell das Cmdlet Get-ScheduledTask, mit welchem auf vielseitige Weise verschiedene Informationen ausgelesen werden können oder aber auch Aufgaben bearbeitet werden können. Wer sich oft mit der Aufgabenplanung beschäftigt, der wird bestimmt mehr nutzen durch die PowerShell haben, den in der Microsoft Management Console ist die Aufgabenplanung sehr umfassend und man benötigt doch einiges an Zeit um die gewünschte Aktion durchführen zu können.

Tolles Buch

PowerShell 5: Windows-Automation für Einsteiger und Profis
  • Tobias Weltner (Autor)
  • 1158 Seiten - 02.06.2016 (Veröffentlichungsdatum) - O'Reilly (Herausgeber)

4 Kommentare

  1. Wer weiß, wie man die Priorität, mit dem der Job angelegt wurde, per PowerShell aus der Aufgabenplanung ausgelesen werden kann?

Kommentare sind deaktiviert.