Ja, die Verwaltung geplanter Aufgaben über die übliche grafische Benutzeroberfläche ist nicht immer der schnellste oder flexibelste Weg, insbesondere wenn man Abläufe automatisieren oder schnell viele Einstellungen anpassen möchte. Hinzu kommt, dass die Windows-Oberfläche manchmal wirklich umständlich sein kann – sie ist nicht immer übersichtlich oder funktioniert einfach nicht richtig, wenn man versucht, Cron-ähnliche Trigger, Berechtigungen oder Aktionen zu bearbeiten. PowerShell ist daher eine ziemlich gute Alternative, die mehr Kontrolle und Skriptfunktionen bietet. Es mag anfangs etwas ungewohnt sein, wenn man es nicht gewohnt ist, aber sobald man die Befehle beherrscht, revolutioniert es die Verwaltung geplanter Aufgaben, insbesondere auf Servern oder bei der Bereitstellung auf mehreren Rechnern.
Dieser Leitfaden erklärt, wie Sie geplante Aufgaben mit PowerShell erstellen, bearbeiten, ausführen und sogar exportieren/importieren. Egal, ob Sie eine Aufgabe einrichten möchten, die beim Systemstart ein Skript ausführt oder eine wöchentliche Datensicherung plant – diese Funktionen sind äußerst nützlich. Außerdem können sie Ihnen in Notfällen helfen, wenn Ihre grafische Benutzeroberfläche nicht mitspielt oder Sie aus Gründen der Konsistenz lieber Skripte verwenden. Sie finden hier einige Befehle, ein paar Tipps und vielleicht auch ein paar Momente, in denen Windows Sie zum Grübeln bringt.
So verwalten Sie geplante Windows-Aufgaben mit PowerShell
Erstellen einer geplanten Aufgabe mit PowerShell
Als Erstes erstellen wir eine Aufgabe. Vergessen Sie das Herumklicken im Aufgabenplaner (es sei denn, Sie möchten es unbedingt), denn PowerShell kann das alles mit ScheduledTasksdem entsprechenden Modul erledigen. Ehrlich gesagt, wird das Einrichten wiederkehrender Aufgaben dadurch deutlich einfacher, sobald Sie sich mit der Syntax vertraut gemacht haben.
Warum der Aufwand? Ganz einfach: Wenn Sie ein Skript beim Systemstart, zu bestimmten Zeiten oder sogar mit erhöhten Rechten ausführen möchten, kann PowerShell das mit wenigen Zeilen Code erledigen. Die Idee ist folgende: Sie erstellen einen Befehl Trigger(wann das Skript ausgeführt wird), einen Befehl Action(was es tun soll) und einen Befehl Principal(wer es ausführt) und registrieren es dann im Taskplaner.
Hier ein kurzer Überblick über ein typisches Setup:
- Geben Sie einen Aufgabennamen an:
$NewTaskName = "StartupScript_PS" - Wählen Sie das Benutzerkonto aus – SYSTEM ist praktisch, wenn der Prozess unabhängig vom angemeldeten Benutzer ausgeführt werden soll. Für andere Benutzer geben Sie den Benutzernamen an
"DOMAIN\username". Beachten Sie, dass Benutzer ohne Administratorrechte die Berechtigung zum Anmelden als Batchauftrag benötigen (prüfen Sie die lokalen Richtlinien für „Anmelden als Batchauftrag“). - Beispiel für ein Systemkonto:
$User="NT AUTHORITY\SYSTEM"- Für einen bestimmten Benutzer:
$User = "woshub\sysops1"
Um einen Trigger zu erstellen, der täglich um 10:00 Uhr ausgeführt wird, gehen Sie einfach wie folgt vor:
$Trigger = New-ScheduledTaskTrigger -At 10:00am -Daily
Tipp: Weitere Zeitplanoptionen, falls Sie Lust auf etwas Schärfe haben:
- Beim Systemstart ausführen:
$Trigger = New-ScheduledTaskTrigger -AtStartup - Wird beim Anmelden des Benutzers ausgeführt:
$Trigger = New-ScheduledTaskTrigger -AtLogon - Eine einmalige Sache:
$Trigger= New-ScheduledTaskTrigger -Once -At 03:00 - Wöchentlich an bestimmten Tagen:
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Wednesday -At 01:00
Nun zur Einrichtung der eigentlichen Aufgabe. Zum Beispiel beim Ausführen eines PowerShell-Skripts:
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\PS\StartupScript.ps1"
Dieser -BypassTeil ist von entscheidender Bedeutung – er verhindert, dass PowerShell aufgrund von Richtlinien die Ausführung verweigert.
Abschließend muss die Aufgabe in der Windows-Aufgabenplanung registriert werden:
Register-ScheduledTask -TaskName $NewTaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
Dadurch -RunLevel Highestwird sichergestellt, dass es bei Bedarf mit Administratorrechten ausgeführt wird. Wenn alles funktioniert, erscheint die Aufgabe nun in der Aufgabenplanungsbibliothek – eine gute Bestätigung dafür, dass sie eingerichtet ist.
Bei manchen Konfigurationen Register-ScheduledTaskkann die Verwendung des Befehls beim ersten Mal etwas merkwürdig sein – beispielsweise wird „Bereit“ angezeigt, aber der Befehl wird nicht ausgeführt. Normalerweise behebt ein Neustart oder die Ausführung von PowerShell als Administrator das Problem. Denn natürlich muss Windows es unnötig kompliziert machen.
Änderung und Verwaltung bestehender Aufgaben
Falls Sie eine Aufgabe später anpassen müssen, können Sie dies verwenden Set-ScheduledTask. Angenommen, Sie möchten einen neuen Auslöser hinzufügen oder ändern, wer die Aufgabe ausführt:
$trigger1 = New-ScheduledTaskTrigger -At 05:00 -Weekly -DaysOfWeek Monday $trigger2= New-ScheduledTaskTrigger -At 05:00 -Weekly -DaysOfWeek Saturday $action = New-ScheduledTaskAction -Execute "myapp.exe" Set-ScheduledTask -TaskName StartupScript_PS -Trigger $trigger1, $trigger2 -Action $action
Oder, falls Sie das Benutzerkonto wechseln müssen, unter dem es ausgeführt wird:
$task_user = New-ScheduledTaskPrincipal -UserId 'woshub\j.abrams' -RunLevel Highest $task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win8' Set-ScheduledTask -TaskName StartupScript_PS -Principal $task_user -Settings $task_settings
Achtung : Sollten Fehlermeldungen wie „Keine Zuordnung zwischen Kontonamen und Sicherheits-IDs“ angezeigt werden, überprüfen Sie den Benutzernamen. Windows kann hier pingelig sein, insbesondere bei der Verwendung von Domänen- oder lokalen Konten.
Aufgaben spontan verwalten und den Status überprüfen
Um die aktiven Aufgaben anzuzeigen, führen Sie Folgendes aus:
Get-ScheduledTask -TaskPath | ? { $_. State -ne 'Disabled' }
Es zeigt an, wann der Prozess zuletzt ausgeführt wurde, ob Fehler aufgetreten sind und wann die nächste Ausführung geplant ist. Nützlich bei der Fehlersuche oder um einfach zu überprüfen, ob Ihre neue Konfiguration funktioniert.
Möchtest du eine Aufgabe sofort starten? Start-ScheduledTask -TaskName CheckServiceState– Zack, führe sie sofort aus. Und wenn du jemals eine Aufgabe löschen möchtest, führe einfach Folgendes aus:
Unregister-ScheduledTask -TaskName CheckServiceState
Export- und Importaufgaben – Teilen ist wichtig
Dieser Teil ist ziemlich cool – Konfigurationen als XML exportieren, damit man sie kopieren oder sichern kann:
Export-ScheduledTask -TaskName StartupScript | Out-File c:\tmp\StartupScript.xml
Und wie importiert man dieses Backup auf einen neuen PC? Ganz einfach:
Register-ScheduledTask -Xml (Get-Content "C:\tmp\StartupScript.xml" | Out-String) -TaskName "StartupScript"
Das ist besonders praktisch, wenn Sie die Anwendung auf vielen Rechnern bereitstellen oder Ihre optimal konfigurierten Aufgabenkonfigurationen sichern möchten. In Unternehmensumgebungen können Sie geplante Aufgaben auch über Gruppenrichtlinien verteilen – was, wenig überraschend, oft die beste Methode ist, wenn Sie Dutzende oder Hunderte von Rechnern verwalten.
Hoffentlich spart Ihnen das ein paar Stunden, falls Sie bisher ewig herumklicken mussten. PowerShell bietet alle erdenklichen Funktionen – sobald Sie die Syntax verstanden haben, sparen Sie enorm viel Zeit.
Zusammenfassung
- Verwenden Sie PowerShell-Befehle zum Erstellen, Bearbeiten und Verwalten geplanter Aufgaben.
- Trigger sind flexibel – sie können beim Systemstart, beim Anmelden, zu bestimmten Zeiten oder wöchentlich ausgeführt werden.
- Aktionen können Skripte, Programme oder Befehle sein.
- Aufgaben lassen sich einfach über XML-Dateien exportieren und importieren.
- PowerShell + Aufgabenplanung ist wesentlich flexibler und besser automatisierbar als die grafische Benutzeroberfläche.
Zusammenfassung
Die Einrichtung geplanter Aufgaben mit PowerShell mag anfangs etwas einschüchternd wirken, aber es lohnt sich wirklich. Es ist schneller, einfacher zu automatisieren und vereinfacht die Verwaltung mehrerer Rechner erheblich. Sobald Sie mit den Befehlen vertraut sind, werden Sie sich fragen, warum Sie jemals die grafische Benutzeroberfläche benutzt haben. Denken Sie nur daran: Windows macht manchmal Probleme und ein Neustart oder die Ausführung von PowerShell als Administrator ist erforderlich. Lassen Sie sich also nicht gleich entmutigen. Aber sobald Sie den Dreh raus haben, wird die Verwaltung geplanter Aufgaben zum Kinderspiel.