Créer une tâche planifiée pour exécuter un script PowerShell

Windows 11Windows Server 2019Windows Server 2022Windows Server 2025

Dans ce tutoriel, nous allons voir comment exécuter un script PowerShell à l’aide d’une tâche planifiée sous Windows.

Cette méthode permet d’automatiser des actions courantes, comme la sauvegarde de fichiers, le nettoyage de journaux ou encore le déploiement de scripts d’administration, sans intervention manuelle.

Nous verrons pas à pas comment créer la tâche planifiée depuis l’interface graphique de Windows, ainsi que la méthode en ligne de commande avec PowerShell.

Ce guide s’applique aussi bien à Windows 10 / 11 qu’à Windows Server (2016, 2019, 2022 et 2025).

Pourquoi exécuter un script PowerShell avec une tâche planifiée ?

PowerShell est un langage puissant pour automatiser l’administration de systèmes Windows.

Combiné au Planificateur de tâches, il devient possible d’exécuter automatiquement des scripts sans aucune action manuelle, à des moments précis ou selon des événements.

Quelques cas d’usage courants :

  • Automatiser des tâches récurrentes
  • Effectuer des sauvegardes planifiées
  • Superviser et maintenir les serveurs
  • Déployer ou mettre à jour des configurations
  • Exécuter des actions même si personne n’est connecté

En résumé, une tâche planifiée PowerShell est un excellent moyen d’automatiser et fiabiliser les opérations Windows tout en évitant les oublis et les actions manuelles.

Prérequis

Avant de créer la tâche planifiée, assurez-vous de remplir les conditions suivantes :

  • Disposer d’un script PowerShell valide – Le fichier doit être au format .ps1, enregistré sur un chemin accessible (exemple : C:\Scripts\Maintenance.ps1).
  • Avoir les droits administrateur – La création ou l’exécution d’une tâche planifiée avec des privilèges élevés nécessite un compte disposant des droits d’administration sur la machine.
  • Utiliser des chemins complets – Lors de la configuration, indiquez toujours le chemin complet du script et du programme (powershell.exe) pour éviter les erreurs de contexte.
  • Vérifier la politique d’exécution PowerShell – Par défaut, Windows peut bloquer les scripts non signés.

Vérifier la configuration actuelle :

Get-ExecutionPolicy

Si nécessaire modifier la configuration (avec précaution) :

Set-ExecutionPolicy RemoteSigned

Tester le script manuellement – Avant de l’intégrer dans une tâche planifiée, exécutez-le une fois dans une console PowerShell pour vérifier qu’il fonctionne correctement :

powershell.exe -NoProfile -File "C:\Scripts\Maintenance.ps1"

Ces vérifications vous éviteront la plupart des erreurs courantes lors de la création ou de l’exécution de la tâche.

Pour illustrer ce tutoriel, on va exécuter le fichier CleanTemp.ps1 qui se trouve dans le dossier C:\Scripts.

Voici le contenu du fichier :

# Nettoyage des fichiers temporaires Windows
$TempPath = "$env:TEMP"
$Date = Get-Date -Format "dd/MM/yyyy HH:mm:ss"
$LogFile = "C:\Logs\CleanTemp.log"

"[$Date] Démarrage du nettoyage du dossier : $TempPath" | Out-File -FilePath $LogFile -Append
Remove-Item -Path "$TempPath\*" -Recurse -Force -ErrorAction SilentlyContinue
"[$Date] Nettoyage terminé." | Out-File -FilePath $LogFile -Append

Le script va simplement supprimer les éléments du dossier temp de Windows et écrire dans un fichier de log.

Méthode 1 : créer une tâche planifiée depuis l’interface graphique

Depuis le menu Démarrer, ouvrir la Planificateur de tâches Windows.

Depuis le Planificateur de tâches, cliquer sur Créer une tâche 1.

Sur l’onglet Général, commencer par nommer la tâche 1, modifier l’utilisateur qui exécute la tâche en sélectionner le compte Système 2, cocher la case : Executer avec les autorisations maximales 3.

Sur l’onglet Déclencheur, nous allons ajouter les planifications, cliquer sur le bouton Nouveau 1.

Configurer la planification 1 (ici tous les jours à 3H du matin), cocher la case : Activée 2 et cliquer sur OK 3.

La planification est ajoutée.

Aller sur l’onglet Actions, ici nous allons configurer l’exécution du script PowerShell, cliquer sur le bouton Nouveau 1.

On va maintenant configurer l’exécution du script PowerShell, action laisser par défaut : Démarrer un programme, dans le champ Programme/script : saisir powershell.exe 1, puis dans le champ Ajouter des arguments (facultatif) saisir : -File "C:\Path\script.ps1" 2 et cliquer sur OK 3.

Dans le champ Programme/script, il est possible de mettre le chemin de l’exécutable PowerShell : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ou d’indiquer le chemin de PowerShell Core si celui-ci est installé : C:\Program Files\PowerShell\7\pwsh.exe

Pour le champ des arguments on peut ajouter -NoProfile -ExecutionPolicy Bypass qui permet d’exécuter le script sans chargement de profil utilisateur et d’ignorer temporairement les restrictions d’exécution de scripts PowerShell.

L’action qui permet d’exécuter le script est ajoutée, cliquer sur OK 1 pour créer la tâche planifiée.

La tâche planifiée est ajoutée.

Tester l’exécution du script PowerShell

Il est possible de tester la tâche planifiée sans attendre son déclenchement, pour cela faire un clic droit dessus et cliquer sur Exécuter 1.

Pour vérifier la bonne exécution, je vais vérifier si le fichier de log est présent, ce qui est la cas, comme on peut le voir ci-dessous.

Méthode 2 : créer une tâche planifiée avec PowerShell

Il est aussi possible de créer la tâche planifiée à l’aide de PowerShell, pour cela, nous allons utiliser 3 variables :

  • $Action : elle va contenir l’action de la tâche, qui est l’exécution du script PowerShell
  • $Trigger : qui contient la planification de la tâche
  • $Principal : qui contient l’utilisateur qui va exécuter la tâche

On va ensuite utiliser la Cmdlet Register-ScheduledTask pour créer la tâche.

Voici le code complet :

$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\CleanTemp.ps1"'
$Trigger = New-ScheduledTaskTrigger -Daily -At 4am
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest
Register-ScheduledTask -TaskName "CleanTempPS" -Action $Action -Trigger $Trigger -Principal $Principal

Une fois exécutée, utiliser la Cmdlet : Get-ScheduledTask -TaskName "<TaskName>" pour vérifier la création.

Conclusion

La combinaison du Planificateur de tâches Windows et de PowerShell est un moyen simple et efficace d’automatiser vos scripts.

En suivant ces étapes, vous pouvez planifier n’importe quel script PowerShell pour s’exécuter à intervalles réguliers ou selon des événements précis, tout en gardant le contrôle sur la sécurité et la journalisation.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

Laisser un commentaire