Creez sarcini programate Windows într-un container Docker cu Powershell. Ca test, am un fișier batch simplu care scrie data/ora curentă într-un fișier text o dată pe oră. Aceasta funcționează perfect:
RUN $action = New-ScheduledTaskAction -Execută „C:\folder\task-tester.cmd”; \
$trigger = New-ScheduledTaskTrigger -Daily -At 12am; \
$settings = New-ScheduledTaskSettingsSet; \
$task = Register-ScheduledTask -TaskName 'Scrie în fișier text' -Utilizator 'SYSTEM' -Trigger $trigger -Action $action -Settings $settings; \
$task.Triggers.Repetition.Duration = 'P1D'; \
$task.Triggers.Repetition.Interval = 'PT1H'; \
$sarcină | Set-ScheduledTask
Când încerc să execut o aplicație de consolă .NET, nu funcționează.
RUN $action = New-ScheduledTaskAction -Execute 'C:\folder\thingy.exe' -WorkingDirectory 'C:\folder'; \
$trigger = New-ScheduledTaskTrigger -Daily -At 10am; \
$settings = New-ScheduledTaskSettingsSet; \
Register-ScheduledTask -TaskName „Numele sarcinii” -Utilizator „SYSTEM” -Trigger $trigger -Action $action -Settings $settings
Mai exact, cel sarcină pare să ruleze - data/ora „ultimei rulări” este corectă și rezultatul este 0 (zero), dar aplicația de consolă în sine nu este executată.
În comanda de mai sus, stabilesc directorul de lucru (o capcană comună cu aplicațiile de consolă .NET).
Dacă fac SSH în container, pot executa „thing.exe” și funcționează conform așteptărilor. Dacă execut manual sarcina programată prin PowerShell Start-ScheduleTask
, din nou, nu pare să se întâmple nimic.
Am încercat să interog jurnalul de evenimente cu PowerShell, dar nu pot vedea nimic imediat util.
O variație a comenzii de mai sus cu opțiuni mai explicite, cum ar fi compatibilitatea și nivelul de rulare, produce același rezultat - adică sarcina nu rulează:
RUN $action = New-ScheduledTaskAction -Execute 'C:\folder\thingy.exe' -WorkingDirectory 'C:\folder' ; \
$trigger = New-ScheduledTaskTrigger -Daily -At 10am; \
$settings = New-ScheduledTaskSettingsSet -Compatibility Win8; \
$principal = New-ScheduledTaskPrincipal -UserID 'NT AUTHORITY\SYSTEM' -LogonType ServiceAccount -RunLevel Cel mai înalt; \
Register-ScheduledTask -TaskName „Numele sarcinii” -Trigger $trigger -Action $action -Settings $settings -Principal $principal
A mai întâlnit cineva asta și a rezolvat-o? Sau mă poate ajuta cineva să obțin mai multe informații de diagnosticare din containerul cu PowerShell?
Mulțumiri!