Exécution d'un fichier de commandes à partir du Planificateur de tâches sans que l'utilisateur ne soit connecté

10

J'essaie d'exécuter un fichier de commandes sur Windows 7 à partir du Planificateur de tâches. Je peux exécuter le fichier de commandes correctement si je l'exécute à partir de l'invite de commandes.

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

J'ai essayé de changer le fichier de commandes pour rien mais la ligne suivante pour m'assurer qu'il n'est pas à cause de ce qu'il y a dans le fichier de commandes:

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

et cela ne fonctionne pas. Des idées? Je l'ai exécuté avec les privilèges les plus élevés et avec un compte administrateur qui dispose des autorisations complètes sur le fichier de commandes et le dossier dans lequel le fichier est en cours d'écriture.

yhussain
la source
Quel compte utilisez-vous pour exécuter la tâche? Quels déclencheurs avez-vous définis?
camilohe
Essayez d'exécuter la tâche en tant que compte de service système.
SamAndrew81

Réponses:

20

PROGRAMMATEUR DE TÂCHES: SCRIPT DE LOTS PROGRAMMÉS NE FONCTIONNE PAS

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

Depuis Windows Task Schedulerau travail Properties (voir la plupart des captures d'écran en bas) dans le. . .

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

    • Décochez Run only when user is logged on
    • Vérifier Run whether user is logged on or not
    • Vérifier Run with the highest privileges
  • 2. Conditions onglet, assurez-vous que les options ci-dessous sont sélectionnées , cochées ou décochées comme indiqué dans l' écran d'impression B

    • Vérifier Wake the computer to run this task
  • 3. Actions Cliquez sur l'onglet, cliquez sur Editet assurez-vous que le Start in (optional)paramètre est défini comme indiqué dans l'exemple ci-dessous ( NE placez PAS de guillemets autour) pour le chemin d'accès complet pointant où se trouve le script de commandes SANS barre oblique inverse " \" Écran d'impression C


CONSIDÉRATIONS DE SÉCURITÉ

  • Une fois que vous avez appuyé sur OK( 2. ci-dessus), il devrait vous inviter à saisir les informations d'identification pour exécuter ceci, et ces informations d'identification seront celles qui auront besoin d'accéder au EXECUTEfichier de commandes là où elles existent, et elles devront également avoir accès pour faire tout ce que le fichier de commandes exécute. que vous avez écrit.

  • Il peut être préférable de configurer un compte d'utilisateur de service / proxy statique pour ce processus, puis d'utiliser ses informations d'identification pour exécuter le processus. Vous devez vous assurer que son mot de passe est fort et qu'il ne doit jamais expirer. Il doit accéder au EXECUTElot et exécuter tout ce que le processus de script par lot est en cours d'exécution et toutes les commandes et ressources, etc. il utilise également.

  • Il semble que l'option que Run whether user is logged on or notvous DEVEZ vérifier Run with highest privilegespour qu'elle s'exécute réellement comme prévu à partir du Planificateur de tâches.

Vérification des erreurs

  • S'il y a un problème avec le script de commandes réel mais que le Planificateur de tâches Windows l' exécute pour l'exécuter mais que la logique du script de commandes sort, etc. pour une raison quelconque, le Planificateur de tâches peut ne pas voir cet échec à ce niveau. De son point de vue (par défaut la plupart du temps), il exécute le fichier de commandes de manière à ce qu'il puisse l'exécuter et qu'il y ait accès, son travail soit effectué avec succès.

  • Ajoutez la vérification des erreurs ou la journalisation à la logique du script de traitement par lots pour détecter (ou dépanner ) les problèmes à ce niveau, notamment en vous assurant que le contexte de sécurité sous lequel le planificateur de traitement par lots l'exécute dispose d'un accès approprié aux commandes, ressources, etc. sous lesquelles le script de traitement par lots s'exécute.


Considérations de stratégie de groupe

VÉRIFIEZ LA POLITIQUE DU GROUPE ET CONNECTEZ-VOUS COMME AUTORISATIONS D'EMPLOI

Réponse: Sous Windows, ce privilège est accordé via la stratégie de sécurité locale ou de domaine . Pour ce faire à l'aide de la stratégie de sécurité locale , procédez comme suit.

  1. Dans le Panneau de configuration , ouvrez Outils d'administration , puis Stratégie de sécurité locale .
  2. Sous Paramètres de sécurité , ouvrez Stratégies locales et mettez en surbrillance Attribution des droits utilisateur .
  3. Recherchez Se connecter en tant que tâche par lots . Ouvrez les propriétés et ajoutez tous les utilisateurs qui en ont besoin.
  4. Une fois terminé, enregistrez vos modifications et fermez la fenêtre Paramètres de sécurité locaux .

Vos modifications devraient prendre effet immédiatement. Pour apporter des modifications à la stratégie de sécurité du domaine, sur un contrôleur de domaine, utilisez l' utilitaire de stratégie de sécurité du domaine dans le Panneau de configuration


Logique de script par lots 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 le souhaitez Run whether the user is logged on or not, dans ce contexte, le mappage de lecteur peut ne pas être réellement là pour que le processus par lots fasse ce qui est attendu.

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


AUTRES

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

  • Regardez l' Settingsonglet de la tâche planifiée et l'option répertorié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 tôt et vous risquez donc de ne pas obtenir les résultats attendus. C'est autre chose à vérifier lors du dépannage au cas où.

    entrez la description de l'image ici

  • Dans l' Triggersonglet de la tâche planifiée lorsque vous sélectionnez l' Editoption, assurez-vous de définir l' Start:heure et la date d'une valeur qui n'est PAS déjà transmise. Assurez-vous que la date et l'heure sont définies sur celles d'une valeur future . Sinon, vous remarquerez peut-être que le travail indique qu'il est prévu de s'exécuter à la prochaine heure planifiée comme prévu; cependant, il n'est pas exécuté par le Planificateur de tâches et l' onglet Planificateur de tâches ne Historymontre pas qu'il est jamais exécuté (car ce n'est pas le cas). Modifiez simplement le déclencheur et mettez-le à jour avec une date et / ou une heure futures pour résoudre ce problème si vous le rencontrez.

    entrez la description de l'image ici


ÉCRANS D'IMPRESSION

Écran d'impression A

entrez la description de l'image ici

Écran d'impression B

entrez la description de l'image ici

Écran d'impression C

entrez la description de l'image ici

Pimp Juice IT
la source