Meilleur auteur de réponses
Gestion des tâches planifiées sous Windows server 2008 R2 ?

Question
-
Bonjour,
Je suis a la recherche d'une astuce pour redémarrer un serveur Windows 2008 R2 sur lequel s’exécutent de nombreuses tâches planifiées via le planificateur de tâche Windows, sans interrompre brusquement le déroulement de ces tâches. Je m'explique : Sous Windows 2003, j’arrête le service planificateur des tâches, ça empêche le lancement de nouvelles taches, mais les tâches deja en cours d'execution poursuivent leur traitement jusqu'à la fin. Je peux alors faire ma maintenance tranquille et rebooter (les fameuses mises à jour Windows)...
Sous 2008, on ne peut pas arrêter ce service a moins d'utiliser PSEXEC comme ceci :
1. Ouvrir une fenêtre de ligne de commande en tant qu’administrateur.
2. Taper la commande suivante : PSEXEC -i -s CMD
3. Ça ouvre une autre fenêtre de commande qui s’exécute avec le compte SYSTEM. Dans cette fenêtre, utiliser les commandes suivantes :
· Pour arrêter le planificateur de tâche taper la commande suivante : SC STOP SCHEDULE
· Pour démarrer le planificateur de tâche taper la commande suivante : SC START SCHEDULE
· Si besoin, pour désactiver le planificateur de tâche (pour pas qu’il se lance automatiquement au boot) : SC CONFIG SCHEDULE start= disable
· Pour le réactiver (démarrage automatique au boot) : SC CONFIG SCHEDULE start= auto
Le problème c'est qu'à la différence de 2003 server, sous 2008, arrêter le service planificateur de tâche a pour effet de terminer les tâches en cours d’exécution !! C'est pas bon, les traitements s’arrêtent en plein milieu...
La seule solution qui me vient a l'esprit c'est de coder un script qui arrête le service planificateur des tâches uniquement si aucune tâche est en cours d’exécution. Mais comment coder ça ? N'y a-t-il pas moyen de faire, par exemple, des requetes WMI ou autre sur l’état des tâches planifiées (en cours d’exécution ou pas...), ça serait beaucoup plus simple que de coder un truc qui va regarder les process en cours d'execution, ceux qui sont utilisés par les différentes tâches... Autant dire que c'est un travail fastidieux...
D'avance merci pour les réponses :)
- Modifié Cyrille M mardi 18 mars 2014 19:27
- Modifié Dan BajenaruMicrosoft employee mercredi 19 mars 2014 14:30 hyperlien.
mardi 18 mars 2014 09:18
Réponses
-
Bonjour,
As-tu regardé du côté de "SCHTASKS.exe" (natif Windows) ?
Http://ItForDummies.net
- Marqué comme réponse Cyrille M vendredi 21 mars 2014 07:48
jeudi 20 mars 2014 14:26
Toutes les réponses
-
Malheureusement les tâches sont créées via la console planificateur de tâche, je ne peux donc pas utiliser la classe WMI Win32_ScheduledJob class :'(
http://msdn.microsoft.com/en-us/library/aa394601(v=vs.85).aspx
- Modifié Dan BajenaruMicrosoft employee mercredi 19 mars 2014 14:30 Hyperliens
mardi 18 mars 2014 10:23 -
Même avec powershell je ne peux pas gérer les tâches planifiées, il faut un server 2012 :(
http://blogs.splunk.com/2013/09/16/monitoring-scheduled-tasks-with-powershell/
- Modifié Dan BajenaruMicrosoft employee mercredi 19 mars 2014 14:31 Hyperlien
mardi 18 mars 2014 10:45 -
Bonjour,
Une idée (il faut que vous la testiez) :
Utiliser WMI pour lister dans un arrray de variables toutes les taches existantes.
(Attention: WMI ne peut lister que les taches crées par scripting ou l’outil AT.exe et ne peut montrer informations sur les taches crées par l’assistant de taches planifiées – ''Use the Win32_ScheduledJob class. Note that this class can only return jobs that are created using either a script or AT.exe. It cannot return information about jobs that are either created by or modified by the Scheduled Task wizard.’’
Puis, pour chaque tache dans la liste remonté, vous vérifiez le statut ( & objJob.JobStatus ).
Si le statut indique ''démarré/running’’, vous pouvez créer un timer dans le script WMI afin d’attendre encore 1-2 minutes, puis de redirectionner le script au début.
Pour le timer consultez la page: http://www.ravichaganti.com/blog/?p=1751.
Puis, le processus de listage des taches recommence et la vérification des statuts.
Au premier statut ‘'actif/running’’, un nouveau timer.Quand toutes les taches sont terminés, le redémarrage est met en place.
Resources:
J’espère avoir pu vous être utile.
Cordialement,
Dan
Dan BAJENARU, MSFT Votez! Appel à la contribution
TechNet Community Support.LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.mercredi 19 mars 2014 14:29 -
Bonjour Dan,
Merci pour la réponse, mais comme je disais plus haut, je ne peux pas utiliser WMI car les tâches en questions sont créés via la mmc Tâches Planifiées. J'ai testé. WMI ne trouve aucune des tâches :(
J'accepte les solutions qui font appel a un programme tierce partie. Je crains que ce soit la seule solution, a moins de passer à Windows Server 2012 (les taches planifiées sont toutes gérables via powershell sous 2012).
Cdt,
mercredi 19 mars 2014 16:47 -
Bonjour,
As-tu regardé du côté de "SCHTASKS.exe" (natif Windows) ?
Http://ItForDummies.net
- Marqué comme réponse Cyrille M vendredi 21 mars 2014 07:48
jeudi 20 mars 2014 14:26 -
Bonjour Emmanuel,
Non je connaissait pas. Ça fera très bien l'affaire !! Merci beaucoup :)
Cdt,
Cyrillevendredi 21 mars 2014 07:48