尝试在 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';
我正在尝试构建一个包含自定义计划任务的容器。 这是我的 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';