Planifier l’exécution d’un script PowerCLI avec Windows
I. Présentation
Les command-let PowerCLI sont utiles, un script l'est aussi, un script PowerShell faisant appel aux command-let PowerCLI dont l'exécution est planifiée, l'est encore plus.
Nous allons voir dans ce tutoriel comment planifier l'exécution d'un script PowerShell contenant des instructions PowerCLI grâce aux "Tâches planifiées" de Windows. Par défaut, Windows exécute les scripts PowerShell avec la console PowerShell mais cette dernière ne connaît pas les command-let de PowerCLI, ce qui crée des problèmes lors de l'exécution. Il faut donc créer la tâche planifiée d'une certaine manière et ajouter une ligne de code dans le script pour indiquer qu'il faut ajouter le composant enfichable correspondant à PowerCLI dans la console PowerShell active.
II. Modification du script
Comme je le disais précédemment, le script doit être modifié et la ligne suivante doit être ajoutée en début de script :
Add-PSSnapin VMware.VimAutomation.Core
Ceci signifie qu'on ajoute le composant "VMware.VimAutomation.Core" à la console PowerShell active dans le but de pouvoir exécuter les command-let PowerCLI.
III. Création de la tâche planifiée
Le script contenant les informations nécessaires à l'exécution, nous allons créer la tâche planifiée permettant de l'exécuter.
Accédez aux tâches planifiées en allant dans "Démarrer" puis faites clic droit sur "Ordinateur" et cliquez sur "Gérer".
Ensuite, allez dans "Configuration", "Planificateur de tâches" puis sélectionnez "Bibliothèque du Planificateur de tâches".
Créez une tâche en faisant clic droit dans la zone centrale et "Créer une nouvelle tâche". Ensuite, remplissez les différents champs selon ce que vous mettez en place. L'onglet qui nous intéresse plus particulièrement est l'onglet "Actions" qui permet d'indiquer ce qu'on doit faire lors de l'exécution de la tâche.
Allez dans l'onglet "Actions" et cliquez sur "Nouveau", vous devriez obtenir ceci :
Sélectionnez "Démarrer un programme" dans la zone "Action". En ce qui concerne le champ "Programme/Script" indiquez "powershell.exe" pour indiquer qu'on exécuter la console PowerShell à chaque exécution de la tâche. De plus, et c'est essentiel, dans le champ "Ajouter des arguments" indiquez ceci (en adaptant) :
-file "chemin_vers_le_script"
Cela permet d'ajouter un argument lors de l'exécution de PowerShell et en l'occurrence dans ce cas, on précise que la console PowerShell doit exécuter le script PowerShell précisé après le paramètre "file". Exemple avec un script qui s'appelle "neoflow.ps1" et qui se situe à la racine de la partition "C" :
IV. Dépannage
Si l'exécution du script ne fonctionne pas, vérifiez la politique d'exécution de scripts PowerShell qui est appliquée sur votre système, et passez la sur l'état "bypass" afin d'essayer si ça fonctionne. Pour plus d'informations, consultez le tutoriel sur l'ExecutionPolicy de PowerShell.
Si ça ne fonctionne toujours pas, essayez d'exécuter votre script sans passer par une tâche planifiée en faisait clic droit dessus puis "Exécuter avec PowerShell" afin de voir s'il n'y a pas un problème dans le contenu du script (et assurez vous d'avoir ajouté la ligne indiquée en début de tutoriel).