Übersicht
Dieser Artikel beschreibt die vollständige Verwaltung des Windows Task Schedulers über das Kommandozeilenwerkzeug schtasks.exe.
Alle Beispiele sind für PowerShell ausgelegt, wobei der Backtick (`) als Zeilenfortsetzung genutzt wird.
Variablenkonvention
| Variable |
Beispiel |
Beschreibung |
<<SERVER_NAME>> |
WSRV2025 |
Zielserver |
<<ADMIN_USER>> |
Administrator |
Ausführender Benutzer |
<<TASK_NAME>> |
DailyTempCleanup |
Aufgabenname |
<<SCRIPT_PATH>> |
C:\Maintenance\cleanup_temp.ps1 |
Skriptpfad |
<<LOG_PATH>> |
C:\Maintenance\Logs |
Logverzeichnis |
<<BACKUP_PATH>> |
C:\Maintenance\Backups |
Verzeichnis für Logarchivierung |
Zeilenfortsetzung in PowerShell vs. CMD
Beispiel (PowerShell):
schtasks.exe /Create `
/TN "Example" `
/SC DAILY `
/ST 02:00 `
/TR "powershell.exe -File example.ps1"
Step 1: Überblick der schtasks.exe-Subbefehle
| Subbefehl |
Zweck |
/Create |
Aufgabe erstellen |
/Delete |
Aufgabe löschen |
/Query |
Aufgaben anzeigen (Liste, Details, XML) |
/Change |
Aufgabe ändern |
/Run |
Aufgabe sofort ausführen |
/End |
Laufende Aufgabe abbrechen |
/ShowSid |
SID des Ausführungskontos anzeigen |
Step 2: /Create – Grundsyntax und wichtige Optionen
2.1 Gesamtsyntax
schtasks.exe /Create `
/TN "<<TASK_NAME>>" `
/TR "<<COMMAND>>" `
/SC Intervall `
[weitere Optionen...]
2.2 Häufig verwendete Optionen
| Option |
Beschreibung |
/SC |
Intervall (DAILY / WEEKLY / MONTHLY / ONLOGON / ONEVENT) |
/MO |
Modifikator |
/ST HH:mm |
Startzeit |
/D |
Tag (1–31 oder MON/TUE/…) |
/RU |
Ausführender Benutzer |
/RP |
Passwort (* für Eingabeaufforderung) |
/RL HIGHEST |
Höchste Privilegstufe |
/F |
Erzwingt Überschreiben |
Hinweis zu /MO
Der Modifikator verfeinert die Ausführungsfrequenz.
Beispiele:
– Alle 3 Stunden → /SC HOURLY /MO 3
– Alle 2 Wochen → /SC WEEKLY /MO 2
– Zweiter Mittwoch im Monat → /SC MONTHLY /MO SECOND /D WED
– Event-Trigger → /SC ONEVENT /MO [XPath-Ausdruck]
2.3 Übersicht der /SC-Intervalle
/SC |
Bedeutung |
| DAILY |
Täglich |
| WEEKLY |
Wöchentlich |
| MONTHLY |
Monatlich |
| ONCE |
Einmalig |
| ONSTART |
Beim Systemstart |
| ONLOGON |
Beim Benutzeranmelden |
| ONIDLE |
Bei Leerlauf |
| ONEVENT |
Auf ein Eventlog-Ereignis |
2.4 Tägliche Aufgabe
schtasks.exe /Create `
/TN "DailyTempCleanup" `
/TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Maintenance\cleanup_temp.ps1 -DaysToKeep 7 -LogPath <<LOG_PATH>>" `
/SC DAILY `
/ST 02:00 `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
2.5 Bei Benutzeranmeldung
schtasks.exe /Create `
/TN "OnLogonAudit" `
/SC ONLOGON `
/TR "powershell.exe -File C:\Scripts\logon_audit.ps1" `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
2.6 Beim Systemstart
schtasks.exe /Create `
/TN "OnStartInit" `
/SC ONSTART `
/TR "powershell.exe -File C:\Scripts\startup_init.ps1" `
/RU "SYSTEM" `
/RL HIGHEST `
/F
2.7 Eventlog-Trigger
schtasks.exe /Create `
/TN "Event101Handler" `
/SC ONEVENT `
/EC System `
/MO "*[System/EventID=101]" `
/TR "powershell.exe -File C:\Scripts\event_handler.ps1" `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
2.8 Alle 3 Stunden
schtasks.exe /Create `
/TN "Every3Hours" `
/TR "powershell.exe -File script.ps1" `
/SC HOURLY `
/MO 3 `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
2.9 Zweiter Mittwoch im Monat
schtasks.exe /Create `
/TN "SecondWednesdayTask" `
/TR "powershell.exe -File task.ps1" `
/SC MONTHLY `
/MO SECOND `
/D WED `
/ST 03:00 `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
2.10 Letzter Tag des Monats
schtasks.exe /Create `
/TN "LastDayMonthly" `
/TR "powershell.exe -File script.ps1" `
/SC MONTHLY `
/MO LASTDAY `
/M * `
/ST 01:00 `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
2.11 Alle 2 Wochen
schtasks.exe /Create `
/TN "Every2Weeks" `
/TR "powershell.exe -File script.ps1" `
/SC WEEKLY `
/MO 2 `
/D MON `
/ST 05:00 `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
Step 3: /Query – Aufgaben anzeigen
| Option |
Beschreibung |
/FO TABLE |
Tabellenformat |
/FO LIST |
Listenformat |
/V |
Details anzeigen |
/TN |
Nur eine bestimmte Aufgabe anzeigen |
schtasks.exe /Query /FO TABLE
schtasks.exe /Query /FO LIST /V
schtasks.exe /Query /TN "<<TASK_NAME>>" /FO LIST /V
Step 4: /Change – Aufgaben ändern
| Option |
Beschreibung |
/TN |
Aufgabenname |
/RU |
Benutzer ändern |
/RP * |
Passwort eingeben |
/TR |
Befehl ersetzen |
/ENABLE /DISABLE |
Aktivieren/Deaktivieren |
Hinweis: Trigger-Definitionen (/SC, /MO, /D, /M) können nicht geändert werden.
Für Triggeränderungen: Aufgabe löschen und neu erstellen.
Benutzer ändern
schtasks.exe /Change `
/TN "<<TASK_NAME>>" `
/RU "<<ADMIN_USER>>" `
/RP *
Befehl ändern
schtasks.exe /Change `
/TN "<<TASK_NAME>>" `
/TR "powershell.exe -File <<SCRIPT_PATH>> -LogPath <<LOG_PATH>>"
Aktivieren/Deaktivieren
schtasks.exe /Change /TN "<<TASK_NAME>>" /ENABLE
schtasks.exe /Change /TN "<<TASK_NAME>>" /DISABLE
Step 5: /Run und /End
schtasks.exe /Run /TN "<<TASK_NAME>>"
schtasks.exe /Run /TN "<<TASK_NAME>>" /I
schtasks.exe /End /TN "<<TASK_NAME>>"
Step 6: XML-basierte Aufgaben
XML importieren
schtasks.exe /Create `
/TN "<<TASK_NAME>>" `
/XML "C:\TaskTemplates\<<TASK_NAME>>.xml" `
/RU "<<ADMIN_USER>>" `
/RP *
XML exportieren
schtasks.exe /Query `
/TN "<<TASK_NAME>>" `
/XML ONE `
> C:\TaskTemplates\<<TASK_NAME>>.xml
Step 8: /Delete – Aufgabe löschen
schtasks.exe /Delete /TN "<<TASK_NAME>>" /F
Step 9: /ShowSid – SID anzeigen
schtasks.exe /ShowSid /TN "<<TASK_NAME>>"
Step 10: Aufgaben auf Remote-Servern
schtasks.exe /Create `
/S "<<SERVER_NAME>>" `
/U "<<ADMIN_USER>>" `
/P * `
/TN "<<TASK_NAME>>" `
/TR "powershell.exe -File <<SCRIPT_PATH>>" `
/SC DAILY `
/ST 02:00 `
/RU "<<ADMIN_USER>>" `
/RL HIGHEST `
/F
Fazit
/SC + /MO ermöglicht flexible Intervalle (täglich, wöchentlich, monatlich, nth-Wochentag, letzter Tag).
- Mit ONLOGON, ONSTART und ONEVENT sind ereignisgesteuerte Automationen möglich.
- Export/Import über
/Query /XML und /Create /XML erleichtert Vorlagenverwaltung.
/Change, /Run, /End, /Delete, /ShowSid decken alle Betriebsaufgaben ab.
- Mit
/S /U /P können Aufgaben remote erstellt und verwaltet werden.