# Richtet die einmalige Windows-Aufgabe "Trading Plattform - Abbau Restbestand" ein oder entfernt sie. # Ersteller: Pascal Michel Erstellt: 2026-10-07 # Doku: LIESMICH.md in diesem Ordner, Abschnitt "Paket AB" # # Pascal 2026-10-07: am 2026-10-08 soweit es geht alles verkaufen. Neun Ausloeser: acht Termine # (Do 2026-10-08 15:45, 16:15, 17:00, 19:00, 21:00; Ersatz Fr 2026-10-09 15:45, 16:30, 19:00) und # fuenf Minuten nach jeder Anmeldung. Der Anmelde-Ausloeser holt einen verpassten Termin nach, wie bei # der Abendkontrolle; dass StartWhenAvailable das fuer eine Aufgabe mit Interactive allein tut, ist # nicht belegt. abbau_restbestand.py tut ausserhalb seines Fensters und nach "flach" nichts; ein Lauf # zur falschen Zeit ist also harmlos. Nach dem 2026-10-09 mit -Aktion entfernen abbauen, sonst bleibt # der Anmelde-Ausloeser stehen. # # Aufruf: powershell -NoProfile -File abbau_restbestand_einrichten.ps1 [-Aktion einrichten|entfernen] param( [ValidateSet("einrichten", "entfernen")] [string]$Aktion = "einrichten" ) $Name = "Trading Plattform - Abbau Restbestand" if ($Aktion -eq "entfernen") { Unregister-ScheduledTask -TaskName $Name -Confirm:$false return } $Py = "C:\Users\Pascal Michel\AppData\Local\Programs\Python\Python313\pythonw.exe" $Skript = "D:\Claude\.vault-tools\trading-plattform-pruefung\abbau_restbestand.py" if (-not (Test-Path $Py)) { throw "Interpreter fehlt: $Py" } if (-not (Test-Path $Skript)) { throw "Skript fehlt: $Skript" } $Termine = @( "2026-10-08T15:45:00", "2026-10-08T16:15:00", "2026-10-08T17:00:00", "2026-10-08T19:00:00", "2026-10-08T21:00:00", "2026-10-09T15:45:00", "2026-10-09T16:30:00", "2026-10-09T19:00:00" ) $Benutzer = "$env:USERDOMAIN\$env:USERNAME" $Aufruf = New-ScheduledTaskAction -Execute $Py -Argument ('"' + $Skript + '" --modus scharf') -WorkingDirectory "D:\Claude" $Anmeldung = New-ScheduledTaskTrigger -AtLogOn -User $Benutzer $Anmeldung.Delay = "PT5M" $Ausloeser = @($Termine | ForEach-Object { New-ScheduledTaskTrigger -Once -At ([datetime]$_) }) + @($Anmeldung) $Wer = New-ScheduledTaskPrincipal -UserId $Benutzer -LogonType Interactive -RunLevel Limited $Regeln = New-ScheduledTaskSettingsSet -StartWhenAvailable -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries ` -ExecutionTimeLimit (New-TimeSpan -Minutes 45) -MultipleInstances IgnoreNew Register-ScheduledTask -TaskName $Name -Action $Aufruf -Trigger $Ausloeser -Principal $Wer ` -Settings $Regeln -Force ` -Description "Abbau des Paper-Restbestands nach dem Netzschalter-Abriss vom 2026-10-07 (Auftrag Pascal). Siehe abbau_restbestand.py." | Out-Null $Aufgabe = Get-ScheduledTask -TaskName $Name "{0}: {1}" -f $Aufgabe.TaskName, $Aufgabe.State "Ausloeser: {0}" -f @($Aufgabe.Triggers).Count $Aufgabe.Triggers | ForEach-Object { "Termin: {0} {1} {2}" -f $_.CimClass.CimClassName, $_.StartBoundary, $_.Delay } "LogonType: {0}" -f $Aufgabe.Principal.LogonType "StartWhenAvailable: {0}" -f $Aufgabe.Settings.StartWhenAvailable "MultipleInstances: {0}" -f $Aufgabe.Settings.MultipleInstances "ExecutionTimeLimit: {0}" -f $Aufgabe.Settings.ExecutionTimeLimit "Naechster Lauf: {0}" -f (Get-ScheduledTaskInfo -TaskName $Name).NextRunTime