Я создаю запланированные задачи Windows в контейнере Docker с помощью Powershell. В качестве теста у меня есть простой пакетный файл, который раз в час записывает текущую дату/время в текстовый файл. Это отлично работает:
RUN $action = New-ScheduledTaskAction -Execute 'C:\folder\task-tester.cmd'; \
$trigger = New-ScheduledTaskTrigger -Daily -At 12am; \
$settings = New-ScheduledTaskSettingsSet; \
$task = Register-ScheduledTask -TaskName 'Запись в текстовый файл' -User 'SYSTEM' -Trigger $trigger -Action $action -Settings $settings; \
$task.Triggers.Repetition.Duration = 'P1D'; \
$task.Triggers.Repetition.Interval = 'PT1H'; \
$ задача | Set-ScheduledTask
Когда я пытаюсь запустить консольное приложение .NET, оно не работает.
RUN $action = New-ScheduledTaskAction -Execute 'C:\folder\thingy.exe' -WorkingDirectory 'C:\folder'; \
$trigger = New-ScheduledTaskTrigger -Daily -At 10am; \
$settings = New-ScheduledTaskSettingsSet; \
Register-ScheduledTask -TaskName 'Имя задачи' -User 'SYSTEM' -Trigger $trigger -Action $action -Settings $settings
В частности, задача кажется, выполняется - дата/время «последнего запуска» верны, а результат равен 0 (ноль), но само консольное приложение не запускается.
В приведенной выше команде я устанавливаю рабочий каталог (распространенная ошибка консольных приложений .NET).
Если я подключаюсь к контейнеру по SSH, я могу запустить «thing.exe», и он работает, как и ожидалось. Если я вручную выполню запланированную задачу через PowerShell Start-ScheduleTask
, опять же, кажется, ничего не происходит.
Я попытался запросить журнал событий с помощью PowerShell, но не вижу ничего полезного.
Вариант приведенной выше команды с более явными параметрами, такими как совместимость и уровень выполнения, дает тот же результат, т. е. задача не запускается:
RUN $action = New-ScheduledTaskAction -Execute 'C:\folder\thingy.exe' -WorkingDirectory 'C:\folder' ; \
$trigger = New-ScheduledTaskTrigger -Daily -At 10am; \
$settings = New-ScheduledTaskSettingsSet - Совместимость с Win8; \
$principal = New-ScheduledTaskPrincipal -UserID 'NT AUTHORITY\SYSTEM' -LogonType ServiceAccount -RunLevel Highest; \
Register-ScheduledTask -TaskName 'Имя задачи' -Trigger $trigger -Action $action -Settings $settings -Principal $principal
Кто-нибудь сталкивался с этим раньше и решил это? Или кто-нибудь может помочь мне получить больше диагностической информации из контейнера с помощью PowerShell?
Спасибо!