J'ai un problème étrange avec le planificateur de tâches sous Windows Server 2016.
Je crée une tâche qui se déclenche tous les jours à 3 heures du matin. Cette tâche ne fait que lancer un simple fichier batch qui supprime quelques fichiers sur un disque local. Rien de spécial donc.
Le résultat de l'exécution de cette tâche est 0xC0000142. Peu importe que je lance cette tâche manuellement ou qu'elle soit lancée par Windows à 3 heures du matin.
Mais si je redémarre tout le serveur et que je lance la tâche manuellement, cela fonctionne. Le résultat est 0x0. J'essaie d'augmenter la "Windows SharedSection" via le registre et de redémarrer, mais rien ne se passe. Le lendemain matin, j'obtiens le résultat 0xC0000142.
Ma tâche en XML :
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2018-11-29T11:46:43.174076</Date>
<Author>ECB189B\Administrator</Author>
<URI>\Delete temp</URI>
</RegistrationInfo>
<Triggers>
<CalendarTrigger>
<StartBoundary>2018-11-29T03:00:00</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByDay>
<DaysInterval>1</DaysInterval>
</ScheduleByDay>
</CalendarTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-21-3460449123-1791338768-3707012617-500</UserId>
<LogonType>S4U</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\mybatch.bat</Command>
</Exec>
</Actions>
</Task>
Mon lot :
@ECHO OFF
del /Q /S C:\temp\*.*
Ce problème ne concerne qu'un seul serveur. Tous les autres serveurs ayant la même tâche n'ont pas ce problème.
/EDIT
D'accord, j'essaie quelque chose. Je change RUN WHETHER USER IS LOGGED ON OR NOT en RUN ONLY WHEN USER IS LOGGED on. Cela fonctionne. Je n'obtiens plus de message d'erreur en exécutant cette tâche à 3 heures du matin, mais ce n'est pas la solution. Pourquoi le mode RUN WHETHER USER IS LOGGED ON OR NOT ne fonctionne-t-il pas ? J'ai essayé avec l'administrateur et l'utilisateur SYSTEM.