web-dev-qa-db-fra.com

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

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écutera 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.

10
yhussain

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

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

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

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

    • DécochezRun only when user is logged on
    • VérifiezRun whether user is logged on or not
    • VérifiezRun with the highest privileges
  • 2. Conditions, assurez-vous que les options ci-dessous sont sélectionnez , cochées , ou décoché comme indiqué dans Impr écran B

    • VérifiezWake the computer to run this task
  • 3. Actions onglet, cliquez sur Edit, et assurez-vous que la Start in (optional) est définie comme indiqué dans l'exemple ci-dessous ( NE PAS mettez des guillemets autour) pour le chemin complet pointant où se trouve le script batch [~ # ~] sans [~ # ~] un final barre oblique inverse "\" Impr écran C


CONSIDÉRATIONS DE SÉCURITÉ

  • Une fois que vous appuyez sur OK ( 2. ci-dessus), il devrait vous inviter à fournir les informations d'identification pour exécuter ceci, et ces informations d'identification sont ce qui besoin d'accéder au EXECUTE fichier batch où il existe, et il devra également avoir accès pour faire tout ce que le fichier batch est en cours d'exécution que vous scripté.

  • 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 est défini pour ne jamais expirer — et il doit avoir accès au EXECUTE le lot et exécuter quel que soit le processus scripté par lots et toutes les commandes et ressources, etc. il utilise aussi.

  • Il semble que l'option Run whether user is logged on or not Vous DEVEZ cocher l'option Run with highest privileges Pour qu'elle s'exécute comme prévu dans le Planificateur de tâches.

Vérification des erreurs

  • S'il y a un problème avec le script de traitement par lots réel mais que le planificateur de tâches Windows l'exécute réellement pour l'exécuter mais que la logique du script de traitement par lots est erronée, 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 commandes dans intercepter (ou résoudre les problèmes ) à ce niveau, notamment en veillant à ce que le contexte de sécurité que le le planificateur de lots l'exécute avec un accès approprié aux commandes, ressources, etc. sous lesquelles le script de commandes s'exécute.


Considérations de stratégie de groupe

VÉRIFIER LA POLITIQUE DU GROUPE ET SE CONNECTER COMME AUTORISATIONS DE TRAVAIL EN LOT

Réponse: Sous Windows, ce privilège est accordé via le Local ou Politique de sécurité du domaine . Pour ce faire en utilisant la stratégie de sécurité locale , procédez comme suit.

  1. Dans le Panneau de configuration , ouvrez Outils d'administration , puis Sécurité locale Politique.
  2. Sous Paramètres de sécurité , ouvrez Stratégies locales et mettez en surbrillance Attribution des droits utilisateur .
  3. Localisez Connectez-vous 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é locale .

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


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 les chemins d'accès UNC 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\ShareName Au début du traitement par lots, puis utiliser POPD à la fin du traitement par lots. Vous pouvez mapper le lecteur avec Net Use X: \\ServerName\ShareName Au 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 les tâches planifiées Settings 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ù.

    enter image description here

  • Du Triggers onglet de la tâche planifiée lorsque vous sélectionnez Edit assurez-vous de définir l'heure et la date Start: sont d'une valeur qui n'est pas déjà passée. Assurez-vous que la date et l'heure sont définies sur celles d'une valeur dans le 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 Planificateur de tâches ni le Planificateur de tâches History tab montre 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.

    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

20
Pimp Juice IT