1 votes

Windows Server 2016 Planificateur de tâches : Les tâches renvoient l'erreur 0xC0000142

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.

1voto

Egberto Zanon Points 11

Selon http://blog.ylnotes.com/winfix-error-0xc0000142-Windows-task-scheduler-fails-to-run-in-batch-mode/

Le planificateur de tâches de Windows ne s'exécute pas en mode batch lorsque la machine n'a plus d'espace de stockage non interactif. Le redémarrage du serveur peut corriger le problème temporaire jusqu'à ce que l'espace de stockage du bureau soit à nouveau épuisé. L'ajustement de la taille de l'espace de stockage du bureau non interactif est connu pour résoudre cette erreur de manière permanente.

Informations sur le tas de bureau Paramètres par défaut de la mémoire du bureau : Serveurs Windows 32 bits : SharedSection=1024,3072,512 Serveurs Windows 64 bits : SharedSection=1024,20480,768

Pour Windows NT :

SharedSection spécifie les tas du système et du bureau en utilisant le format suivant :

Section partagée=xxxx,yyyy Pour Windows 2000 et supérieur :

SharedSection utilise le format suivant pour spécifier les tas du système et du bureau :

Section partagée=xxxx,yyyy,zzzz

à FIXER :

  1. Exécuter l'éditeur de registre regedit.exe

  2. Recherchez la clé suivante dans l'éditeur de registre : HKLM \SYSTEM\CurrentControlSet\Control\Session Gestionnaire \SubSystems

  3. Cliquez pour modifier les sous-systèmes \Windows valeur. %SystemRoot% \system32\csrss.exe Répertoire d'objets= \Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

  4. Localiser le paramètre SharedSection dans les données de cette valeur. Ce paramètre aura 3 ou 4 valeurs.

  5. Augmenter la troisième valeur de SharedSection par incréments de 256 ou 512 jusqu'à ce que le problème soit résolu.

  6. Un redémarrage peut être nécessaire pour prendre effet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X