web-dev-qa-db-fra.com

Mon script ne s'exécutera pas sous le planificateur de tâches. Pourquoi?

J'ai un script vbscript qui fonctionne bien lorsque je l'exécute moi-même.

Pour une raison quelconque, lorsque je l'exécute sous le planificateur de tâches en tant qu'administrateur, il s'exécute, mais n'écrit même pas dans mon fichier journal. Il ne devrait pas s'agir d'autorisations, car l'utilisateur sous lequel je l'exécute est adminstrator.

C'est un script appelant des dll 32 bits sur une machine Win2008 64 bits.

C:\windows\SysWOW64\cscript.exe Bob.vbs

J'ai également défini le répertoire local à l'endroit où je l'exécute.

Ironiquement, le planificateur de tâches dit que "termine avec succès" l'exécution de la tâche.

En outre, il existe d'autres scripts dans le planificateur de tâches qui fonctionnent correctement, il s'agit simplement de ce script.

Est-ce que quelqu'un a une liste de choses que je peux vérifier?

12
GordyII

J'ai eu un problème similaire lors de l'exécution d'une tâche planifiée sur mon serveur SVN.

Mon script écrivait dans ce que je pensais être le répertoire de travail actuel (le répertoire que j'ai spécifié pour la tâche sous le dossier "Démarrer dans"). Si je me suis connecté sur le serveur et ai exécuté le script, cela a bien fonctionné. Ce n'est pas le cas lorsque vous exécutez un travail planifié. 

Dans mon cas, il me semblait que le planificateur avait réaffecté le répertoire de travail au répertoire spécifié dans la variable d'environnement TEMP pour le compte d'utilisateur utilisé pour exécuter le travail, et non au répertoire que j'avais spécifié pour la tâche (le dossier "Démarrer dans"). ).

Vérifiez le dossier TEMP pour le compte et voyez si vos fichiers sont là.

6
Patrick Cuff

J'ai eu ce problème avec les fichiers de commandes DOS et les scripts VB sur Windows 2008 Server et Windows 7. Dans tous les cas, une fois que j'ai défini le dossier "démarrer dans" pour l'action de tâche planifiée, tout a bien fonctionné.

7
Jared

J'ai eu un réel problème avec cela (bien un matin) et a trouvé cette solution ici

Dans le planificateur de tâches Windows, je devais cliquer sur le bouton "Changer d'utilisateur ou de groupe" et ajouter le groupe "Administrateurs".

J'espère que ça aide quelqu'un. 

5
john

Si vous utilisez une machine Win2008 64 bits: cela (enfin) a fonctionné pour moi sur le même serveur. Le planificateur de tâches exécute un fichier de commandes (par exemple, runvbs.bat) pour appeler cscript avec une version 32 bits de l'interpréteur de ligne de commande, comme suit:

@echo off
%windir%\syswow64\cmd.exe /C "c:\windows\system32\cscript.exe //B //nologo import_some_data.vbs"

Notez les guillemets doubles .

J'ai utilisé le groupe Administrateurs pour les autorisations et Exécuter avec les privilèges les plus élevés.

Configurer pour: Windows® 7, Windows Server ™ 2008 R2

Dans la boîte de dialogue Modifier l'action, j'ai:

Action: démarrer un programme

Programme/script: runvbs.bat

Commencez par: c:\inetpub\wwwroot\asp\importstuff \

4
Arbor

Résolu le même problème. Le script échouait lors de la connexion à la base de données, puis il avait échoué lors de la création du fichier Xls. J'ai créé un fichier bat et y ai ajouté le contenu ci-dessous. ce fichier bat appellera mon script vb et l'exécutera en mode 32 bits. 

%windir%\SysWoW64\cmd.exe /C "c:\windows\system32\cscript.exe //B //nologo C:\ScheduledJobs\PrimeReconDev\myVBScript.vbs"

J'ai configuré le programme de tâches pour exécuter le fichier bat avec le contenu ci-dessus et attribuer l'utilisateur exécutant aux administrateurs. Faites-le en sélectionnant l'option "changer d'utilisateur ou de groupe" dans l'onglet Général. une fois fait j'ai pu exécuter avec succès aucun problème. J'exécutais initialement en tant que moi et je fais partie du groupe des administrateurs mais cela échouait toujours. Exécuter en tant qu'administrateur intégré a fait l'affaire

1
Damion Willi

Solution alternative:

Exécuter uniquement lorsque l'utilisateur est connecté

Faites cette sélection dans le gestionnaire de tâches.


C’est ce qui a été corrigé pour moi (sur 3 ordinateurs distincts - Win7 Pro, Win12 Server)

J'espère que cela peut aider quelqu'un d'autre.

0
Elias

J'ai eu le même problème jusqu'à ce que j'ajoute le chemin où le travail de batte est stocké dans Démarrer dans sur l'onglet Action.

Cliquez avec le bouton droit sur Tâche → Propriétés → Actions → Modifier le début de (facultatif). 

Il suffit de remplir le chemin d'accès à votre travail de chauve-souris.

0
kingkeamo

J'ai eu le même problème. A utilisé la chaîne suivante dans le champ Task -> Run CMD/C "chemin complet de mon script VBScript" Comme CMD/C c:\Test\MyScript.vbs

0
kjsm

J'ai eu des problèmes similaires dans le passé avec le code ne s'exécutant pas lors de la planification de scripts VBS - cela peut être problématique! Aussi curieux de voir si quelqu'un peut résoudre ce problème. (En passant, nous l'avons résolu en réécrivant le code sous la forme d'une application console C #)

0
Chris

Pour Windows 2008, vous devez probablement vous assurer que la tâche est exécutée avec des privilèges d'administrateur.

Onglet Général - (Vérifier) ​​Exécuter avec les privilèges les plus élevés

0
guest

J'ai eu le même problème. 

Je l'ai corrigé en utilisant le chemin relatif ("logs\log") au lieu de l'absolu que j'utilisais auparavant ("U:\workingDirectory\logs\log").

Bien entendu, lorsque vous exécutez des scripts via le planificateur de tâches, vous devez utiliser des chemins relatifs.

0
ignis

Lorsque j'ai ce problème, c'est généralement parce que le programme exécuté sur ma tâche génère une erreur, même si la valeur de retour de la tâche terminée ne signalait aucun problème.

Vous dites qu'il fonctionne mais n'écrit pas dans votre journal. Est-il possible qu'il se bloque avant d'écrire dans votre journal?

Si vous ne l'avez pas déjà fait, ajoutez le traitement des erreurs à votre script et essayez de consigner les erreurs, ou du moins essayez de suivre la progression du script.

0
Jay Riggs

J'ai regardé partout pour comprendre cela, mais maintenant que j'ai compris, je vais partager.

Si les scripts fonctionnaient correctement sur le serveur 2003, essayaient de passer au serveur 2012 et une partie du script ne serait pas exécutée.

Il fallait créer une nouvelle tâche et, dans l’onglet général, sélectionner configurer pour "Windows Server 2003, Windows XP ou Windows 2000. Cette option ne permet pas pour 2003 si vous utilisez une tâche de base, vous devez utiliser une nouvelle tâche." .

0
Nate