Rund um Windows Aufgabenplanung

Task Export (.xml) erklärt

Zeitenkürzel, z.B. PT2M erklärt: https://stackoverflow.com/a/51168078/1777526

<Principals> (dt. Auftraggeber)

Entspricht den Sicherheitsoptionen im Tab Allgemein des Task Scheduler Wizards.

<Runlevel> (LeastPrivilege/HighestAvailable)

Diese StackoverflowAntwort deutet m.E. indirekt an, dass tasks mit LeastPrivilege von Nicht-Admins ausgeführt werden können; die tasks mit Highest jedoch nur von Admins ausgeführt werden dürfen.

Weitere Doku zu <Runlevel> hier.

<UserId>

Wird durch folgendes Prompt gesetzt:

Achtung: auf einem Rechner im Unternehmenskontext kann ein voranstellen der domain vor dem Usernamen nötig sein, dann Namen überprüfen.

Mapping GUI <-> XML (eigene Beobachtung)

Option 1
Option 2

Dies ist die einzige Option bei der man anschließend zur Eingabe eines Passworts aufgefordert wird.

Option 3
Option: Mit höchsten Privilegien ausführen

Aufgabe mit unendlicher Laufzeit anlegen

Microsoft’s Übersetzer machen einem diese Aufgabe nicht leicht, da sie indefinitely mit Sofort statt mit Unendlich übersetzt haben.

So sieht also der Trigger einer unendlich laufenden Aufgabe auf einem deutschsprachigen Windows aus:


Hier nochmal das englische Pendant.

Honour to my colleague Gert 🙂

Aufgabe jeden Tag (außer Sonntags)

analog zu: https://serverfault.com/q/366211/232266

    <CalendarTrigger>
      <StartBoundary>2022-08-24T15:13:15</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Monday />
          <Tuesday />
          <Wednesday />
          <Thursday />
          <Friday />
          <Saturday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>

Debugge Task Scheduler

„I find it absurd that there isn’t a built-in logging facility in Scheduled Tasks“

Redirect script output to file in task scheduler (microsoft.com)

Hier meine Lösung: Debugge eine in einem Task-Scheduler task Ausgeführte .ps1 | IT Kosmopolit (it-kosmopolit.de)

Verhindere, dass zwei verschiedene Tasks gleichzeitig laufen

Es scheint hierfür kein Feature im Task Scheduler zu geben. Ich habe jeden falls ChatGPT befragt, die GUI des Task Schedulers genau darauf geprüft und diese ähnliche Frage auf Stackexchange gefunden.

$taskNameSubstring = "MeinTask" # Hier den Teilstring des Tasknamens einfügen

# Prüfen, ob der Task bereits ausgeführt wird
$taskRunning = Get-ScheduledTask | Where-Object {$_.TaskName -like "*$taskNameSubstring*" -and $_.State -eq "Running"}

# Wenn der Task bereits läuft, warten Sie, bis er beendet ist
while ($taskRunning -ne $null) {
    Write-Host "Task läuft bereits. Warte auf Beendigung..." -ForegroundColor Yellow
    Start-Sleep -Seconds 5 # Warten Sie 5 Sekunden, bevor Sie den Task erneut überprüfen
    $taskRunning = Get-ScheduledTask | Where-Object {$_.TaskName -like "*$taskNameSubstring*" -and $_.State -eq "Running"}
}

# Wenn der Task nicht läuft, führen Sie Ihren Code aus
Write-Host "Task läuft nicht. Führe meinen Code aus..." -ForegroundColor Green
# Hier können Sie Ihren eigenen Code einfügen

Thx to ChatGPT

Tags: scheduled task, scheduled tasks