- .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/abbau_alpaca_lesen.py - .vault-tools/trading-plattform-pruefung/abbau_glattstellen.sh - .vault-tools/trading-plattform-pruefung/abbau_ibkr_lesen.sh - .vault-tools/trading-plattform-pruefung/abbau_restbestand.py - .vault-tools/trading-plattform-pruefung/abbau_restbestand_angriffe.py - .vault-tools/trading-plattform-pruefung/abbau_restbestand_einrichten.ps1 - AI/Regelwerk/windows-shell.md Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
55 lines
3.1 KiB
PowerShell
55 lines
3.1 KiB
PowerShell
# 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
|