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

1

7

I am trying to build a container which would include a custom scheduled task. This is my dockerfile:

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

I get the following error:

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

I get the same error also when attaching to a running default windows core container and running the command.

Needless to say, the command works well on standard windows 2016 server.

It seems like a bug in Windows containers, but I didn't find any known issue about it.

Appreciate any leads which may help figure out.

Bullpup answered 7/2, 2017 at 8:32 Comment(2)
Any luck with this error? I'm also running into this issueAfro
No, i ended up creating the schedule on the hosting OS.Bullpup
B
13

The issue has to do with the Container user. By default a scheduled task is created with the current user. It's possible the container user is a special one that the Scheduled Task command cannot parse into XML.

So you have to pass the user /ru (and if needed the password /rp) to the schtasks command in a Windows Container.

This works

FROM microsoft/windowsservercore
RUN schtasks /create /tn "hellotest" /sc daily /tr "echo hello" /ru SYSTEM

It will run the command under the system account.

If you are a fan of Powershell (like me), you can use this

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';
Bergwall answered 9/10, 2017 at 9:0 Comment(3)
Spot-on! Thank you!Bullpup
if you are running schtasks in a container from PS youll probably need to escape stuff: RUN schtasks --% /create /tn "hellotest" /sc minute /mo 30 /ru SYSTEM /tr \"echo lskjflsdf\"Aggressor
thank you very much ! spent countless hours on this bug and you saved me !Soledadsolely

© 2022 - 2024 — McMap. All rights reserved.