Exécution programmée d’un script PowerShell

PowerShell_Task_Scheduler

Comment exécuter automatiquement un script PowerShell sur un poste client à heure fixe ou lors d’un événement particulier tel que le login/logout ?

Bien sûr, nous allons utiliser le planificateur de tâches de Windows. Vous pourrez donc réaliser cette opération sur Windows 7, Windows 8 mais bien entendu également sur Windows Server.

Etape 1 – Une script de test

Pour l’exemple, il nous faut bien entendu un script à planifier. Je vous propose ces quelques lignes qui vont afficher un popup avec la date et l’heure du jour.


[System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
$dateoftheday = get-date -uformat "%d-%m-%Y"
$timeofthemoment = get-date -uformat "%H:%M"
[Windows.Forms.MessageBox]::Show(“Coucou ! Nous sommes le $dateoftheday et il est $timeofthemoment.”, “Coucou c'est moi”, [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)

Etape 2 – Le planificateur de tâches (ou Task Scheduler si votre OS est en EN)

Démarrez le planificateur de tâches.

Une fois dans la fenêtre principale, je vous recommander d’éviter l’option créer une tâche “basique” mais plutôt créer une tâche, “normale” si je puis dire.

Vous devriez voir la fenêtre suivante :

Task Scheduler 1

Il n’est pas nécessaire de remplir l’ensemble des options. Sur cette première fenêtre, vous n’avez qu’à simplement renseigner un nom pour votre tâche programmée. Dans mon cas, je l’appelle “Display Popup“.

Passez ensuite sur le second onglet, Triggers. C’est là que nous allons pouvoir définir quand et sous quelle identité notre tâche devra s’exécuter. Vous pouvez choisir d’exécuter cette tâche à un jour et une heure précise mais pour notre exemple imaginons que nous voulons l’exécuter à chaque fois qu’un utilisateur démarre son ordinateur, après qu’il se soit identifié avec son compte.

Nous sélectionner dans le premier menu déroulant “At log on” pour que la tâche démarre dès que l’utilisateur s’identifie sur son poste et que sa session s’ouvre. Si votre tâche nécessite par exemple des droits administrateurs, vous pouvez définir le compte sous lequel elle doit s’exécuter.

Task Scheduler 2

Les autres options sont superflues.

Mais sachez que vous pouvez par exemple :

  • décaler l’exécution de la tâche de 15 minutes après l’identification de l’utilisateur,
  • répéter son exécution toutes les heures,
  • définir une période de début et de fin (si par exemple il s’agit d’une tâche qui doit expirer après une période donnée),

Veillez bien entendu à cocher la dernière option “Activée“/Enabled pour que votre tâche soit active.

Nous passons maintenant au troisième onglet “Actions“.

Sélectionner “Démarrer un programme” dans le menu déroulant “Action“.

Pour exécuter un script PowerShell, il nous suffit simplement de préciser que nous voulons exécuter le prompt Powershell.exe ainsi que le chemin où se trouve notre script PowerShell.

Task Scheduler 3

Notez que pour cet exemple, j’ai déposé tout simplement le script à la racine du disque C:\.

C’est terminer votre tâche est prête à s’exécuter.

Etape 3 – Pour aller plus loin

Vous pouvez afficher les différentes options qui vous sont proposées par les deux derniers onglets.

Cela n’a pas d’utilité particulière pour notre exemple mais vous remarquerez que vous pouvez tout de même gérer plusieurs cas intéressantes :

  • Les conditions d’exécution de la tâche : si l’ordinateur s’ennuie (ne fait rien), si la machine est sur secteur ou sur batterie, s’il est connecté au réseau…
  • Permettre l’exécution test de la tâche planifiée,
  • L’exécuter dès que si possible si nous manquons la fenêtre d’exécution (dans le cas où cela serait à heure/jour fixe),
  • etc.

Etape 4 – Test de la tâche

Pour vérifier que notre tâche fonctionne correctement, il ne vous reste plus qu’à vous déconnecter de votre ordinateur.

Menu démarrer, se déconnecter puis vous re-connecter à votre session à saisissant à nouveau votre identifiant/mot de passe.

Vous devriez voir le popup suivant :

ok

D’une manière plus générale, sachez que peu importe la tâche que vous créez vous pouvez forcer son exécution au moment que vous souhaitez pour en tester le bon fonctionnement.

Il vous suffit simplement de la sélectionner dans la fenêtre principale du planificateur de tâches, puis dans le panneau latéral à droite, vous pouvez : exécuter, terminer (pour forcer l’arrêt) ou bien la désactiver temporairement.