Ошибка при попытке создать запланированное задание в контейнере Windows 2016 Core
Я пытаюсь создать контейнер, который будет включать пользовательские запланированные задачи. Это мой dockerfile:
FROM microsoft/windowsservercore
RUN schtasks /create /tn hello /sc daily /st 00:00 /tr "echo hello"
Я получаю следующую ошибку:
ОШИБКА: XML-файл задачи содержит значение, которое неправильно отформатировано или находится вне диапазона. (43,4): Задача:
Я получаю ту же ошибку и при подключении к работающему стандартному контейнеру Windows и выполнению команды.
Само собой разумеется, команда работает хорошо на стандартном сервере Windows 2016.
Это похоже на ошибку в контейнерах Windows, но я не нашел ни одной известной проблемы по этому поводу.
Цените любые выводы, которые могут помочь выяснить.
1 ответ
Проблема связана с пользователем контейнера. По умолчанию запланированное задание создается с текущим пользователем. Возможно, пользователь контейнера является особым, которого команда "Назначенная задача" не может проанализировать в XML.
Таким образом, вы должны передать пользователю /ru
(и при необходимости пароль /rp
) к schtasks
команда в контейнере Windows.
Это работает
FROM microsoft/windowsservercore
RUN schtasks /create /tn "hellotest" /sc daily /tr "echo hello" /ru SYSTEM
Он запустит команду под системной учетной записью.
Если вы поклонник Powershell (как и я), вы можете использовать это
FROM microsoft/windowsservercore
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN $action = New-ScheduledTaskAction -Execute 'echo ""Hello World""'; \
$trigger = New-ScheduledTaskTrigger -Daily -At '1AM'; \
Register-ScheduledTask -TaskName 'Testman' -User 'SYSTEM' -Action $action -Trigger $trigger -Description 'Container Scheduled task test';