尝试在Windows 2016核心容器中创build计划任务时出错

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

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

我得到以下错误:

错误:任务XML包含格式不正确或超出范围的值。 (43,4):任务:

附加到正在运行的默认Windows核心容器并运行该命令时,也会得到相同的错误。

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

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

欣赏任何可能帮助弄清楚的线索。

这个问题与Container用户有关。 默认情况下,计划任务是由当前用户创build的。 容器用户可能是特殊的,计划任务命令不能parsing为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';