7 votes

Comment copier de nombreuses tâches programmées entre des machines Windows Server 2008 ?

J'ai plusieurs serveurs autonomes Win2008 (R1+R2) (sans domaine) et chacun d'eux a des dizaines de tâches planifiées. Chaque fois que nous configurons un nouveau serveur, toutes ces tâches doivent être créées sur celui-ci.

Les tâches ne se trouvent pas à la "racine" de la "bibliothèque du planificateur de tâches", mais dans des sous-dossiers, jusqu'à deux niveaux de profondeur.

Je sais que je peux utiliser schtasks.exe pour exporter des tâches vers un fichier xml, puis les utiliser :

schtasks.exe /CREATE /XML ...' 

pour les importer sur le nouveau serveur. Le problème est que schtasks.exe les crée tous dans la racine et non dans les sous-dossiers auxquels ils appartiennent. L'interface graphique ne permet pas non plus de déplacer les tâches.

Existe-t-il un outil qui me permette de gérer toutes mes tâches de manière centralisée, et qui me permette de les créer dans des dossiers sur plusieurs machines ? Cela faciliterait également la définition de l'utilisateur et du mot de passe d'exécution.

2voto

Todd Points 2342

Donc, comme personne ici n'avait de réponse, je me suis assis et j'ai écrit un petit programme moi-même.

Il importe les tâches existantes dans une base de données. Vous pouvez ensuite copier la base de données sur une autre machine et créer toutes les tâches dans la même structure de dossiers sur la nouvelle machine.

Vous pouvez également l'utiliser pour renommer les tâches, les déplacer dans différents dossiers ou en supprimer plusieurs en un seul clic.

Il nécessite .NET 4 et Vista ou une version plus récente.

2voto

Matthew Cary Points 21

Lorsque vous spécifiez le nom de la tâche en utilisant schtasks.exe vous pouvez ajouter les dossiers que vous souhaitez utiliser pour les organiser.

Schtasks.exe /create /xml taskname.xml /TN folder1\taskname

va créer le dossier1 et ensuite créer taskname à l'intérieur.

Il ne vous aide pas à déplacer les tâches déjà créées, mais il vous aide à en gérer de nouvelles.

1voto

FcoJavier99 Points 11

C'est ainsi que je l'ai fait, en utilisant la commande SCHTASKS.exe :

  1. Vous pouvez obtenir l'aide à l'exécution de la commande dans la ligne de commande (cmd ou PowerShell) : SCHTASKS /? pour pour obtenir de l'aide sur une sous-commande spécifique : SCHTASKS /Query /? o SCHTASKS /Create /? etc.

  2. Liste de vos tâches dans les hôtes sources

SCHTASKS /Query /FO CSV | clip

Ici, je copie la tâche dans le presse-papiers, puis je l'extrais dans un éditeur de texte. J'ai utilisé : https://regexr.com/ un utilitaire d'expression régulière en ligne.

  1. Avec la liste des tâches, j'ai construit les commandes (utiliser un tableur est une bonne idée, avec des fonctions "concaténer") pour extraire les définitions dans des fichiers xml :

Notez que le /TN (nom de la tâche) contient le nom du dossier, mais pas le nom du fichier.

SCHTASKS /Query /XML /TN "\Replication\Delete Old Replication Logs" > "Delete Old Replication Logs.xml"

  1. Ensuite, j'ai copié les fichiers xml sur l'hôte cible, généré les commandes et les ai exécutées dans une console de ligne de commande ouverte avec des privilèges d'administrateur, à l'endroit où se trouvent les fichiers xml.

SCHTASKS /Create /RU yourdomain\youruser /RP yourpassword /TN "\Replication\Delete Old Replication Logs" /XML "Delete Old Replication Logs.xml"

C'est tout, cette méthode a fonctionné pour moi, peut-être pour d'autres personnes aussi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X