OVH Cloud OVH Cloud

Scripter le planificateur de tache en wmi

6 réponses
Avatar
PE
Bonjour,

Comment est il possible de planifier une tâche par le biais de VBScript
et WMI en ayant les paramètres suivant :

- exécution tous les jours à partir de 9h00.
- pendant 10 heures.
- toutes les 1 heure.

La chose est possible manuellement en activant les paramètres avancés de
la boite de dialogue du planificateur de taches.

Je n'ai trouvé aucune option pour appliquer ces même paramètres lors de
l'invocation de la méthode create de la classe Win32_ScheduledJob.

Avez vous des idées ?

Merci

6 réponses

Avatar
Jean-Claude BELLAMY
Dans le message :,
PE a pris la peine d'écrire ce qui suit :
Bonjour,

Comment est il possible de planifier une tâche par le biais de
VBScript et WMI en ayant les paramètres suivant :

- exécution tous les jours à partir de 9h00.
- pendant 10 heures.
- toutes les 1 heure.

La chose est possible manuellement en activant les paramètres avancés
de la boite de dialogue du planificateur de taches.

Je n'ai trouvé aucune option pour appliquer ces même paramètres lors
de l'invocation de la méthode create de la classe Win32_ScheduledJob.

Avez vous des idées ?



Non, je n'ai jamais pratiqué cette classe.
Pour ce qui est des tâches planifiées, je préfère "CRON" ou "PYCRON" (enter
autre parce que les tâches planifiées de Windows ne permettent de définir
des fréquences rapides de l'ordre de la minute)

http://www.kalab.com/freeware/cron/cron.htm
http://www.kalab.com/freeware/pycron/pycron.htm

Mais voici ce que j'ai trouvé dans l'aide en ligne du SDK de WMI :
______________________

La classe Win32_ScheduledJob représente une tâche planifiée en utilisant le
fonctions du service de planification de la gestion du réseau (aussi
identifiée comme fonctions "Job" et "AT command"). À noter que ceci est
différent des tâches planifiées en utilisant le Planificateur de tâches
Windows 2000. Cette classe n'existe que sur Windows NT 4.0 et ultérieure.
Chaque tâche planifiée dans le service de planification est stockée de
manière permanente (le planificateur saura démarrer le travail même après un
redémarrage) et est exécuté au jour et à l'heure spécifiés dans la semaine
et/ou le mois.
Si l'ordinateur n'est pas actif ou si le service de planification n'est pas
en cours d'exécution au moment spécifié, le service de planification
exécutera le travail spécifié le jour suivant au moment spécifié.
Les travaux planifiés le sont en respectant le temps UTC (Universal
Coordinated Time), c'est-à-dire avec le décalage horaire par rapport à
l'heure du méridien de Greenwich (GMT). Cela signifie qu'un travail peut
être spécifié en utilisant toute spécification de fuseau horaire.
La classe Win32_ScheduledJob renverra l'heure locale avec le décalage UTC en
énumérant un objet et en convertissant à l'heure locale lors de la création
de nouvelles tâches.
Par exemple une tâche spécifiée pour s'exécuter sur un ordinateur à Boston à
21.30 le Lundi PST sera planifiée pour s'exécuter localement à 1.30 le Mardi
EST. À noter que le client doit prendre en compte l'heure d'été sur
l'ordinateur et si c'est le cas soustraire 60 minutes du décalage UTC.

______________________
Propriétés :
========
Caption
La propriété Caption est une description courte de l'objet
sous forme de texte (chaîne d'une ligne).
Command
La propriété Command contient le nom de la commande,
du programme batch ou du fichier binaire (ainsi que les
arguments de la ligne de commande) que le service de
planification utilisera pour invoquer le travail.
Exemple : defrag /q /f
DaysOfMonth
La propriété DaysOfMonth indique les jours du mois pour
lesquels le travail est planifié pour s'exécuter.
DaysOfWeek
La propriété DaysOfWeek indique les jours de la semaine
pour lesquels le travail est planifié pour s'exécuter.
Description
La propriété Description fournit une description de l'objet
sous forme de texte.
ElapsedTime
Durée pendant laquelle la tâche a été exécutée.
InstallDate
La propriété InstallDate indique la date et l'heure à laquelle
l'objet a été installé. Si cette valeur est vide, ceci n'indique
pas que l'objet n'est pas installé.
InteractWithDesktop
La propriété InteractWithDesktop permet au travail spécifié
d'être interactif (ce qui signifie qu'un utilisateur peut fournir
des entrées dans une tâche planifiée lorsqu'elle s'exécute).
Les valeurs possibles sont VRAI ou FAUX.
Si VRAI, le travail sera interactif.
Si FAUX, le travail ne sera pas interactif.
JobId
La propriété JobId indique le numéro d'identificateur du travail.
Il est utilisé par les méthodes en tant que handle d'un travail
simple planifié sur cet ordinateur.
JobStatus
La propriété JobStatus indique si un service planifié s'est exécuté
correctement la dernière fois où ce travail était supposé s'exécuter.
Name
La propriété Name définit le nom par lequel l'objet est connu.
Lorsqu'elle est mise sous forme de sous-classe, la propriété
Name peut être ignorée pour être une propriété Key.
Notify
Notifier l'utilisateur lors de la fin ou de l'échec de la tâche.
Owner
Utilisateur qui a soumis une tâche.
Priority
Priority indique l'urgence ou l'importance de l'exécution d'une tâche.
RunRepeatedly
La propriété RunRepeatedly indique si la tâche planifiée doit être
exécutée de manière répétitive les jours où le travail est planifié.
Valeurs : VRAI ou FAUX.
Si VRAI, le travail est exécuté de manière répétitive.
Si FAUX, le travail n'est exécuté qu'une fois.
StartTime
La propriété StartTime représente l'heure UTC pour laquelle le
travail est planifié, au format AAAAMMJJHHMMSS.MMMMMM(+-)OOO,
où AAAAMMJJ doit être remplacé par ********.
Le remplacement est nécessaire car le service de planification
ne permet que la configuration des travaux sur un jour du mois,
jour de la semaine, ou pour une exécution unique.
Un travail ne peut pas être exécuté pour une date spécifique.
Exemple : ********123000.000000-420 signifie
12:30 PST avec l'horaire d'été effectif.
Status
La propriété Statut est une chaîne qui indique le statut actuel
de l'objet. Plusieurs statuts opérationnels ou non peuvent être
définis.
Les statuts opérationnels sont "OK", "Détérioré" et "Échec prévu".
"Échec prévu" indique qu'un élément fonctionne correctement
mais qu'une défaillance est prévue dans un futur proche.
Il peut s'agir, par exemple, d'un disque dur activé pour SMART.
Des statuts non opérationnels peuvent également être spécifiés.
Il s'agit de "Erreur", "Démarrage", "Arrêt" et "Service".
Le dernier, "Service", peut s'appliquer lors de la recréation
d'un disque en miroir, le rechargement d'une liste d'autorisations
d'utilisateur, ou d'autres tâches administratives.
Toutes ces tâches ne sont pas effectuées en ligne, pourtant
l'élément géré n'est ni "OK", ni aucun des autres statuts.
TimeSubmitted
Heure à laquelle la tâche a été soumise.
UntilTime
Heure après laquelle la tâche est non valide ou devrait être arrêtée.


______________________
Méthodes :
======== Les 2 méthodes Create et Delete renvoie une valeur entière qui peut être
interprétée de la manière suivante :
0 - Opération terminée correctement
1 - Non pris en charge
2 - Accès refusé
8 - Échec inconnu
9 - Chemin d'accès non trouvé
21 - Paramètre non valide
22 - Service non démarré
Autre - Pour des valeurs entières autres que celles apparaissant
dans la liste ci-dessus, référez-vous à la documentation
concernant les codes d'erreur Win32.

uint32 Create(
[in] string Command,
[in] datetime StartTime,
[in] boolean RunRepeatedly,
[in] uint32 DaysOfWeek,
[in] uint32 DaysOfMonth,
[in] boolean InteractWithDesktop,
[out] uint32 JobId
);
La fonction Create soumet un travail au système d'exploitation pour une
exécution à une heure et une date spécifiées. Cette fonction nécessite que
le service de planification soit démarré sur l'ordinateur auquel le travail
est soumis.


uint32 Delete();
La méthode Delete supprime une tâche planifiée.

______________________


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
ou http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
PE
Dans le message :,
PE a pris la peine d'écrire ce qui suit :
Bonjour,

Comment est il possible de planifier une tâche par le biais de
VBScript et WMI en ayant les paramètres suivant :

- exécution tous les jours à partir de 9h00.
- pendant 10 heures.
- toutes les 1 heure.

La chose est possible manuellement en activant les paramètres avancés
de la boite de dialogue du planificateur de taches.

Je n'ai trouvé aucune option pour appliquer ces même paramètres lors
de l'invocation de la méthode create de la classe Win32_ScheduledJob.

Avez vous des idées ?



Non, je n'ai jamais pratiqué cette classe.
Pour ce qui est des tâches planifiées, je préfère "CRON" ou "PYCRON" (enter
autre parce que les tâches planifiées de Windows ne permettent de définir
des fréquences rapides de l'ordre de la minute)

http://www.kalab.com/freeware/cron/cron.htm
http://www.kalab.com/freeware/pycron/pycron.htm

Mais voici ce que j'ai trouvé dans l'aide en ligne du SDK de WMI :
______________________

La classe Win32_ScheduledJob représente une tâche planifiée en utilisant le
fonctions du service de planification de la gestion du réseau (aussi
identifiée comme fonctions "Job" et "AT command"). À noter que ceci est
différent des tâches planifiées en utilisant le Planificateur de tâches
Windows 2000. Cette classe n'existe que sur Windows NT 4.0 et ultérieure.
Chaque tâche planifiée dans le service de planification est stockée de
manière permanente (le planificateur saura démarrer le travail même après un
redémarrage) et est exécuté au jour et à l'heure spécifiés dans la semaine
et/ou le mois.
Si l'ordinateur n'est pas actif ou si le service de planification n'est pas
en cours d'exécution au moment spécifié, le service de planification
exécutera le travail spécifié le jour suivant au moment spécifié.
Les travaux planifiés le sont en respectant le temps UTC (Universal
Coordinated Time), c'est-à-dire avec le décalage horaire par rapport à
l'heure du méridien de Greenwich (GMT). Cela signifie qu'un travail peut
être spécifié en utilisant toute spécification de fuseau horaire.
La classe Win32_ScheduledJob renverra l'heure locale avec le décalage UTC en
énumérant un objet et en convertissant à l'heure locale lors de la création
de nouvelles tâches.
Par exemple une tâche spécifiée pour s'exécuter sur un ordinateur à Boston à
21.30 le Lundi PST sera planifiée pour s'exécuter localement à 1.30 le Mardi
EST. À noter que le client doit prendre en compte l'heure d'été sur
l'ordinateur et si c'est le cas soustraire 60 minutes du décalage UTC.

______________________
Propriétés :
======== >
Caption
La propriété Caption est une description courte de l'objet
sous forme de texte (chaîne d'une ligne).
Command
La propriété Command contient le nom de la commande,
du programme batch ou du fichier binaire (ainsi que les
arguments de la ligne de commande) que le service de
planification utilisera pour invoquer le travail.
Exemple : defrag /q /f
DaysOfMonth
La propriété DaysOfMonth indique les jours du mois pour
lesquels le travail est planifié pour s'exécuter.
DaysOfWeek
La propriété DaysOfWeek indique les jours de la semaine
pour lesquels le travail est planifié pour s'exécuter.
Description
La propriété Description fournit une description de l'objet
sous forme de texte.
ElapsedTime
Durée pendant laquelle la tâche a été exécutée.
InstallDate
La propriété InstallDate indique la date et l'heure à laquelle
l'objet a été installé. Si cette valeur est vide, ceci n'indique
pas que l'objet n'est pas installé.
InteractWithDesktop
La propriété InteractWithDesktop permet au travail spécifié
d'être interactif (ce qui signifie qu'un utilisateur peut fournir
des entrées dans une tâche planifiée lorsqu'elle s'exécute).
Les valeurs possibles sont VRAI ou FAUX.
Si VRAI, le travail sera interactif.
Si FAUX, le travail ne sera pas interactif.
JobId
La propriété JobId indique le numéro d'identificateur du travail.
Il est utilisé par les méthodes en tant que handle d'un travail
simple planifié sur cet ordinateur.
JobStatus
La propriété JobStatus indique si un service planifié s'est exécuté
correctement la dernière fois où ce travail était supposé s'exécuter.
Name
La propriété Name définit le nom par lequel l'objet est connu.
Lorsqu'elle est mise sous forme de sous-classe, la propriété
Name peut être ignorée pour être une propriété Key.
Notify
Notifier l'utilisateur lors de la fin ou de l'échec de la tâche.
Owner
Utilisateur qui a soumis une tâche.
Priority
Priority indique l'urgence ou l'importance de l'exécution d'une tâche.
RunRepeatedly
La propriété RunRepeatedly indique si la tâche planifiée doit être
exécutée de manière répétitive les jours où le travail est planifié.
Valeurs : VRAI ou FAUX.
Si VRAI, le travail est exécuté de manière répétitive.
Si FAUX, le travail n'est exécuté qu'une fois.
StartTime
La propriété StartTime représente l'heure UTC pour laquelle le
travail est planifié, au format AAAAMMJJHHMMSS.MMMMMM(+-)OOO,
où AAAAMMJJ doit être remplacé par ********.
Le remplacement est nécessaire car le service de planification
ne permet que la configuration des travaux sur un jour du mois,
jour de la semaine, ou pour une exécution unique.
Un travail ne peut pas être exécuté pour une date spécifique.
Exemple : ********123000.000000-420 signifie
12:30 PST avec l'horaire d'été effectif.
Status
La propriété Statut est une chaîne qui indique le statut actuel
de l'objet. Plusieurs statuts opérationnels ou non peuvent être
définis.
Les statuts opérationnels sont "OK", "Détérioré" et "Échec prévu".
"Échec prévu" indique qu'un élément fonctionne correctement
mais qu'une défaillance est prévue dans un futur proche.
Il peut s'agir, par exemple, d'un disque dur activé pour SMART.
Des statuts non opérationnels peuvent également être spécifiés.
Il s'agit de "Erreur", "Démarrage", "Arrêt" et "Service".
Le dernier, "Service", peut s'appliquer lors de la recréation
d'un disque en miroir, le rechargement d'une liste d'autorisations
d'utilisateur, ou d'autres tâches administratives.
Toutes ces tâches ne sont pas effectuées en ligne, pourtant
l'élément géré n'est ni "OK", ni aucun des autres statuts.
TimeSubmitted
Heure à laquelle la tâche a été soumise.
UntilTime
Heure après laquelle la tâche est non valide ou devrait être arrêtée.


______________________
Méthodes :
======== > Les 2 méthodes Create et Delete renvoie une valeur entière qui peut être
interprétée de la manière suivante :
0 - Opération terminée correctement
1 - Non pris en charge
2 - Accès refusé
8 - Échec inconnu
9 - Chemin d'accès non trouvé
21 - Paramètre non valide
22 - Service non démarré
Autre - Pour des valeurs entières autres que celles apparaissant
dans la liste ci-dessus, référez-vous à la documentation
concernant les codes d'erreur Win32.

uint32 Create(
[in] string Command,
[in] datetime StartTime,
[in] boolean RunRepeatedly,
[in] uint32 DaysOfWeek,
[in] uint32 DaysOfMonth,
[in] boolean InteractWithDesktop,
[out] uint32 JobId
);
La fonction Create soumet un travail au système d'exploitation pour une
exécution à une heure et une date spécifiées. Cette fonction nécessite que
le service de planification soit démarré sur l'ordinateur auquel le travail
est soumis.


uint32 Delete();
La méthode Delete supprime une tâche planifiée.

______________________




Merci pour cette réponse.

Malheureusement, Cron ou PyCron ne vont pas convenir à mon besoin, je
voudrais en effet éviter de devoir déployer un outil sur l'ensemble du
parc de machines du domaine.

Le Besoin est de créer pour un ensemble des utilisateurs du domaine une
tâche qui va s'exécuter de façon répétitive journalièrement et de facon
horaire, d'où l'idée d'utiliser l'infrastructure de windows
(planificateur de tâche et script wmi et GPO pour déploiement).

Je me dis aussi que si il est possible de créer une telle tâche par
l'interface du planificateur, il doit bien être possible de la créer par
programme.


Avatar
Jean
Bonjour,

Comment est il possible de planifier une tâche par le biais de VBScript et
WMI en ayant les paramètres suivant :

- exécution tous les jours à partir de 9h00.


Voir la doc :
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/create_method_in_class_win32_scheduledjob.asp
et les exemples du Script Center :
http://www.microsoft.com/technet/scriptcenter/scripts/os/tasks/default.mspx

Donc :
en spécifiant le paramètre StartTime , par ex; :
"********090000.000000+060"
en mettant tout les jours dans le paramètre DaysOfWeek :
1 Or 2 Or 4 Or 8 Or 16 Or 32 Or 64
et en mettant le paramètre RunRepeatedly sur True
dans la méthode Create.

- pendant 10 heures.
- toutes les 1 heure.


je ne vois pour l'instant rien qui pourrait le faire directement avec
WMI, donc je dirais en mettant un timer dans le script (dans lequel on
pourrait éventuellement tester la valeur de la propriété ElapsedTime,
voir
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_scheduledjob.asp
et l'exemple su Script Center pour itérer la collection des tâches)


La chose est possible manuellement en activant les paramètres avancés de la
boite de dialogue du planificateur de taches.

Je n'ai trouvé aucune option pour appliquer ces même paramètres lors de
l'invocation de la méthode create de la classe Win32_ScheduledJob.

Avez vous des idées ?

Merci


Amicalement,




--
Jean - JMST
Belgium

Avatar
Méta-MCI
Bonjour !

Et en utilisant la commande "AT" (dans un batch), ça ne suffirait pas ?
(aide : AT /?)

@-salutations

Michel Claveau
Avatar
Jean
Bonjour !

Et en utilisant la commande "AT" (dans un batch), ça ne suffirait pas ? (aide :
AT /?)

@-salutations

Michel Claveau


Pour sa demande n°1 se sera kif kif bourricot

Pour ses demandes n°2 et 3, si on doit utiliser un timer et manipuler
des dates se sera plus simple d'utiliser VBScript,JScript ou MSH (bien
sûr), voire Pyhton (n'est-ce pas ?) ... amha :O)

Amicalement,

--
Jean - JMST
Belgium

Avatar
Jacques Barathon [MS]
"PE" wrote in message
news:
Bonjour,

Comment est il possible de planifier une tâche par le biais de VBScript et
WMI en ayant les paramètres suivant :

- exécution tous les jours à partir de 9h00.
- pendant 10 heures.
- toutes les 1 heure.

La chose est possible manuellement en activant les paramètres avancés de
la boite de dialogue du planificateur de taches.

Je n'ai trouvé aucune option pour appliquer ces même paramètres lors de
l'invocation de la méthode create de la classe Win32_ScheduledJob.


Sous XP et 2003 la commande en ligne SCHTASKS permet de programmer des
tâches avec le même niveau de fonctionnalité que l'interface graphique. Tape
SCHTASKS /? pour plus d'infos.

Jacques