尝试在 Windows 2016 Core 容器中创建计划任务时出错

Error trying to create a scheduled task within Windows 2016 Core container

我正在尝试构建一个包含自定义计划任务的容器。 这是我的 dockerfile:

FROM microsoft/windowsservercore
RUN schtasks /create /tn hello /sc daily /st 00:00 /tr "echo hello"

我收到以下错误:

ERROR: The task XML contains a value which is incorrectly formatted or out of range. (43,4):Task:

我在附加到 运行 默认 windows 核心容器和 运行 命令时也遇到同样的错误。

不用说,该命令在标准 windows 2016 服务器上运行良好。

这似乎是 Windows 容器中的错误,但我没有发现任何已知问题。

感谢任何可能有助于解决问题的线索。

此问题与 Container 用户有关。默认情况下,计划任务是使用当前用户创建的。容器用户可能是计划任务命令无法解析为 XML.

的特殊用户

因此您必须将用户 /ru(如果需要密码 /rp)传递给 Windows 容器中的 schtasks 命令。

这个有效

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';