PowerShell-Skripte planen
- Ein Skript mit dem Windows Task Scheduler zeitgesteuert ausführen
- Geplante Aufgaben mit PowerShell anlegen, prüfen, starten und entfernen
Wiederkehrende Aufgaben (Berichte, Aufräumen, Prüfungen) laufen am besten automatisch. Unter Windows ist dafür der Task Scheduler (Aufgabenplanung) zuständig. PowerShell steuert ihn mit dem Modul ScheduledTasks.
1. Über die Oberfläche
Abschnitt betitelt „1. Über die Oberfläche“taskschd.mscstarten (Aufgabenplanung).- Aufgabe erstellen…
- Reiter Allgemein: Name vergeben. „Unabhängig von der Benutzeranmeldung ausführen” wählen, wenn es ohne angemeldeten Benutzer laufen soll.
- Reiter Trigger: Wann? (täglich, bei Systemstart, …)
- Reiter Aktionen: Programm
C:\Program Files\PowerShell\7\pwsh.exe, Argumente-NoProfile -File "C:\Kurs\Skripte\MeinSkript.ps1".
2. Mit PowerShell: ScheduledTasks
Abschnitt betitelt „2. Mit PowerShell: ScheduledTasks“Eine geplante Aufgabe besteht aus Aktion, Trigger und optional Einstellungen und Konto.
$aktion = New-ScheduledTaskAction -Execute 'C:\Program Files\PowerShell\7\pwsh.exe' ` -Argument '-NoProfile -File "C:\Kurs\Skripte\LogDemo.ps1"'$trigger = New-ScheduledTaskTrigger -Daily -At 09:00
Register-ScheduledTask -TaskName 'Kurs-LogDemo' -Action $aktion -Trigger $trigger ` -Description 'Demoaufgabe aus dem PowerShell-Kurs'Verwalten:
Get-ScheduledTask -TaskName 'Kurs-LogDemo'Start-ScheduledTask -TaskName 'Kurs-LogDemo'Get-ScheduledTaskInfo -TaskName 'Kurs-LogDemo' # LastRunTime, LastTaskResultUnregister-ScheduledTask -TaskName 'Kurs-LogDemo' -Confirm:$falseUnter welchem Konto läuft die Aufgabe?
Abschnitt betitelt „Unter welchem Konto läuft die Aufgabe?“Standardmäßig unter deinem Benutzer, nur wenn du angemeldet bist. Für unbeaufsichtigte Aufgaben legst du ein Konto fest:
$principal = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel HighestRegister-ScheduledTask -TaskName 'Kurs-Nachts' -Action $aktion -Trigger $trigger -Principal $principalSYSTEM hat sehr weitreichende Rechte. Verwende für produktive Aufgaben ein eigenes Dienstkonto mit minimalen Rechten (zum Beispiel ein gruppenverwaltetes Dienstkonto, gMSA).
3. schtasks.exe
Abschnitt betitelt „3. schtasks.exe“Das ältere Kommandozeilenwerkzeug schtasks.exe funktioniert weiterhin und begegnet dir in vielen Skripten:
schtasks.exe /Query /TN "Kurs-LogDemo"Für neue Skripte ist ScheduledTasks besser, weil du Objekte statt Text bekommst.
4. Hinweise für geplante Skripte
Abschnitt betitelt „4. Hinweise für geplante Skripte“- Gib absolute Pfade an. Das Arbeitsverzeichnis einer Aufgabe ist nicht das deines Skripts.
-NoProfilebeschleunigt den Start und vermeidet Überraschungen durch dein Profil.- Schreibe ein Protokoll (Transcript oder Logdatei), sonst siehst du nicht, was passiert ist. Siehe Logging.
- Das Konto braucht Rechte auf Ordner und Ziele.
Zusammenfassung
Abschnitt betitelt „Zusammenfassung“- Task Scheduler: Aktion + Trigger + Konto.
New-ScheduledTaskAction,New-ScheduledTaskTrigger,Register-ScheduledTask,Start-ScheduledTask,Get-ScheduledTaskInfo.Register-ScheduledJobgibt es nur in Windows PowerShell 5.1.