Aufgabenplanung mit schtasks.exe verwalten

Ü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

  • PowerShell: `
  • 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.