13 votes

Exécuter un fichier batch à partir du Planificateur de tâches sans que l'utilisateur ne soit connecté.

Je suis en train d'essayer d'exécuter un fichier batch sur Windows 7 à partir du Planificateur de tâches. Je peux exécuter le fichier batch correctement si je le lance depuis l'invite de commandes.

Si je le lance à partir du Planificateur de tâches pour qu'il s'exécute uniquement lorsque l'utilisateur est connecté, la tâche s'exécute sans aucun problème. Cependant, lorsqu'elle s'exécute lorsque l'utilisateur n'est pas connecté, le Planificateur de tâches semble exécuter le fichier mais rien ne se passe.

J'ai essayé de modifier le fichier batch pour ne contenir que la ligne suivante afin de m'assurer que le problème ne vient pas du contenu du fichier batch :

echo "success" >> c:\temp\test.log

et cela ne fonctionne pas. Des idées? Je le fais s'exécuter avec les privilèges les plus élevés et avec un compte administrateur ayant des autorisations complètes sur le fichier batch et le dossier où le fichier est écrit.

1 votes

Quel compte utilisez-vous pour exécuter la tâche? Quels déclencheurs avez-vous configurés?

1 votes

Essayez d'exécuter la tâche en tant que compte de service système.

26voto

Pimp Juice IT Points 985

TASK SCHEDULER : BATCH script PAS EN COURS D'EXECUTION

Propriétés du planificateur de tâches . . .

De Windows Task Scheduler au travail <strong><code>Properties</code></strong> (voir la plupart des captures d'écran en bas) dans le . .

  • 1. <code>General</code> assurez-vous que les options ci-dessous sont sélectionnées, cochées ou décochées, comme indiqué dans l'exemple ci-dessous. Imprimer l'écran A

    • Décochez Run only when user is logged on
    • Vérifiez Run whether user is logged on or not
    • Vérifiez Run with the highest privileges
  • 2. <code>Conditions</code> assurez-vous que les options ci-dessous sont sélectionnez , vérifié ou non vérifié comme indiqué dans Imprimer l'écran B

    • Vérifiez Wake the computer to run this task
  • 3. <code>Actions</code> cliquez sur <code>Edit</code> et s'assurer que le Start in (optional) est défini comme indiqué dans l'exemple ci-dessous ( NE PAS mettez des guillemets doubles autour) pour le chemin complet indiquant où se trouve le lot script. SANS un dernier backslash " \ " Imprimer l'écran C

CONSIDÉRATIONS DE SÉCURITÉ

  • Une fois que vous avez appuyé sur <code>OK</code> ( 2. ci-dessus), vous serez invité à indiquer l'identifiant sous lequel vous souhaitez exécuter le programme, et cet identifiant vous permettra d'accéder aux services suivants EXECUTE le fichier batch où il existe, et il aura également besoin d'un accès pour faire ce que le fichier batch en cours d'exécution que vous avez scripté.

  • Il peut être préférable de configurer un compte utilisateur de service/proxy statique pour ce processus, puis d'utiliser ses informations d'identification pour exécuter le processus. Vous devrez vous assurer que son mot de passe est fort et qu'il est configuré pour ne jamais expirer, et qu'il doit avoir accès à EXECUTE le batch et exécute tout ce que le processus scripté du batch est en train d'exécuter et toutes les commandes et ressources, etc. qu'il utilise également.

  • Il semble que l'option Run whether user is logged on or not vous DEVEZ vérifier l'option Run with highest privileges pour qu'il soit réellement s'exécute comme prévu par le planificateur de tâches.

Vérification des erreurs

  • S'il y a un problème avec le script de lot réel, mais que le programme Windows Tâche Scheduler l'exécute effectivement pour le lancer mais le lot script se trompe de logique, etc. pour une raison quelconque, le fichier Planificateur de tâches mai ne pas voir cet échec à ce niveau. De son point de vue (par défaut la plupart du temps), elle l'exécution du fichier batch, donc tant qu'il peut l'exécuter et qu'il a accès pour le faire, son travail est accompli avec succès.

  • Ajouter vérification des erreurs ou journalisation à la logique du lot script pour attraper (ou dépannez ) les problèmes à ce niveau, y compris l'assurance que le contexte de sécurité que l'ordonnanceur de lot exécute en tant que a un accès approprié aux commandes, ressources, etc. que le script de lot exécute en tant que.


Considérations sur la politique de groupe

VÉRIFIER LA POLITIQUE DE GROUPE ET SE CONNECTER EN TANT QU'AUTORISATION DE TRAVAIL PAR LOT

Réponse : Sous Windows, ce privilège est accordé par le biais de la commande Local ou Politique de sécurité du domaine . Pour ce faire, il faut utiliser le Politique locale de sécurité , suivez ces étapes.

  1. Dans le Panneau de contrôle , ouvert Outils administratifs alors Sécurité locale Politique.
  2. Sous Paramètres de sécurité , ouvert Politiques locales et mettre en évidence Utilisateur Affectation des droits .
  3. Localiser Connectez-vous en tant que tâche de lot . Ouvrez le propriétés et ajoutez tous les utilisateurs qui ont besoin de ce droit.
  4. Une fois terminé, sauver vos modifications et fermez le Sécurité locale Paramètres de sécurité locale fenêtre.

Vos changements devraient prendre effet immédiatement. Pour apporter des modifications au site Web de politique de sécurité du domaine, sur un contrôleur de domaine, utilisez la commande Domaine Utilitaire de politique de sécurité en el Panneau de contrôle


Logique de lot script avec lecteurs mappés ou chemin UNC complet, et problèmes. . .

Si votre script fait référence à un lecteur réseau mappé mais que vous voulez qu'il Run whether the user is logged on or not alors, dans ce contexte, le mappage du lecteur peut ne pas être présent pour que le processus de traitement par lots fasse ce qui est attendu.

Si possible, utilisez UNC dans votre logique de lot script plutôt qu'une lettre de lecteur mappé pour éviter les problèmes. Sinon, vous devrez peut-être utiliser PUSHD \\ServerName\ShareName au début du processus de traitement par lots, puis utiliser la fonction POPD à la fin du processus de traitement par lots. Vous pouvez mapper le lecteur avec NET USE X: \\ServerName\ShareName au début du processus de traitement par lots, puis déconnecter le lecteur avec NET USE X: /DELETE à la fin du processus de traitement par lots.


AUTRES

  • CORRECTIF MS (KB977353) : L'élément de préférence Tâche immédiate de la stratégie de groupe ne s'exécute pas sur un ordinateur client qui exécute Windows 7 ou Windows Server 2008 R2.

  • Regardez l'écran de la tâche planifiée <strong><code>Settings</code></strong> et l'option listée comme Stop the task if it runs longer than: . Si cette option est cochée et que la période est inférieure à un script en cours d'exécution, le planificateur de tâches le tuera prématurément et vous risquez donc de ne pas obtenir les résultats escomptés. C'est une autre chose à vérifier lors du dépannage, juste au cas où.

    enter image description here

  • より <strong><code>Triggers</code></strong> de la tâche planifiée lorsque vous sélectionnez l'onglet <strong><code>Edit</code></strong> veillez à définir l'option Start: l'heure et la date ont une valeur qui n'est PAS déjà passée. Assurez-vous que la date et l'heure sont définies comme étant celles d'une valeur dans le fichier Futur . Sinon, vous remarquerez que le travail indique qu'il est programmé pour s'exécuter à la prochaine heure prévue, comme vous vous y attendez ; cependant, il n'est pas exécuté par l'utilisateur. Planificateur de tâches ni le Planificateur de tâches History L'onglet montre qu'il n'est jamais exécuté (car il ne l'est pas). Il suffit de modifier le déclencheur et de le mettre à jour avec une date et/ou une heure future pour résoudre ce problème si vous le rencontrez.

    enter image description here


ÉCRANS D'IMPRESSION

Imprimer l'écran A

enter image description here

Imprimer l'écran B

enter image description here

Imprimer l'écran C

enter image description here

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