Sous Windows, le planificateur de tâches intégré peut être utilisé pour effectuer une action selon un calendrier ou lorsqu'un certain événement se produit. Ce guide explique comment configurer un script PowerShell pour qu'il s'exécute automatiquement à l'aide du Planificateur de tâches Windows. Le script PS1 doit s'exécuter en arrière-plan, n'afficher aucune fenêtre contextuelle et s'exécuter quels que soient les paramètres actuels de la stratégie d'exécution du script PowerShell.
Dans cet exemple, je souhaite exécuter leC:PSOutlook_Email_to.ps1Fichier de script PowerShell toutes les 10 minutes.
En savoir plus:Générateur de scripts AI : transformez des idées en scripts avec l'IA
- Ouvrez lePlanificateur de tâchesconsole en exécutant
taskschd.msccommande - Développez l'arborescence de la bibliothèque du Planificateur de tâches. Pour plus de commodité, créez un dossier séparé pour vos tâches planifiées personnalisées. Faites un clic droit et sélectionnezCréer une tâche.

- Dans leGénéral, spécifiez le nom de la tâche et l'utilisateur sous lequel elle sera exécutée. La tâche peut s'exécuter automatiquement :– lorsque l'utilisateur spécifique est connecté (
Run only the task is logged in)– ou si l'utilisateur est connecté ou non (Run whether user is logged on or not).Le deuxième mode est le plus souvent utilisé. Dans le second cas, vous pouvez spécifier que la tâche doit s'exécuter pour le compte d'un utilisateur spécifique (le Credentials Manager utilisé pour stocker le mot de passe de l'utilisateur). Si la tâche nécessite une élévation, activez l'option 'Exécutez avec les privilèges les plus élevés' option.


Pour éviter d'utiliser un mot de passe stocké, vous pouvez configurer la tâche pour qu'elle s'exécute en tant que NT AUTHORITYSYSTEM avec les privilèges les plus élevés. Pour cela, entrez
SYSTEMdans leUtilisateurchamp.

Dans un environnement AD, les tâches planifiées peuvent s'exécuter au nom des comptes de service gérés gMSA. - Dans leDéclencheurs, spécifiez la condition ou l'heure de démarrage de la tâche Planificateur. Par exemple, pour exécuter une tâche lorsqu'un utilisateur se connecte, sélectionnez l'option 'Lors de la connexion' déclencher et sélectionner une fréquence de10minutes dans le 'Répétez la tâche tous les' option.


- Si la tâche s'exécute au nom du SYSTÈME ou d'un utilisateur avec un mot de passe stocké, choisissez d'exécuter la tâche au démarrage de Windows (Au démarrage) et de le redémarrer périodiquement.


- Ou utilisez leSelon un horairedéclencheur pour définir l’heure exacte de démarrage de la tâche. Plusieurs déclencheurs de démarrage peuvent être configurés pour une seule tâche.
Le planificateur peut également exécuter une tâche lorsqu'un événement spécifique se produit dans l'Observateur d'événements (voir Comment exécuter une tâche planifiée une fois qu'une autre tâche est terminée). - Allez ensuite auActeslanguette. Spécifiez l'action à entreprendre lorsque l'un des événements déclenchés se produit. Je souhaite exécuter un script PowerShell dans ce cas. SélectionnerNouveau->Démarrer un programme. Configurez les paramètres d'action suivants :
Programme/scénario :powershell.exe
Ajoutez des arguments (facultatif) :-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File "C:PSOutlook_Email_to.ps1"
Avant d'exécuter le script via le Planificateur de tâches, vérifiez qu'il ne renvoie aucune erreur en mode sans assistance. Utilisez la commande suivante :powershell.exe -file C:PS Outlook_Email_to.ps1 -NoExit - Les options suivantes sont utilisées pour exécuter un script PowerShell :
-File– chemin complet vers le fichier script (PS1)-ExecutionPolicy— Définissez les paramètres de stratégie d'exécution de script PowerShell pour la session en cours. Les paramètres de stratégie actuels sont ignorés et le script est quand même exécuté siBy-passest spécifié ;-NonInteractive– Ne pas afficher d’invites interactives à l’utilisateur-WindowStyle Hidden– Masquez la fenêtre de la console PowerShell à l'utilisateur (le script s'exécute masqué). La fenêtre d'invite PowerShell peut apparaître et disparaître momentanément pendant l'exécution du script si la tâche du planificateur est configurée pour s'exécuter lorsque l'utilisateur se connecte. Il n'y a pas d'invite clignotante uniquement pour les scripts démarrés dans la session de console 0 (indépendamment de la connexion de l'utilisateur).-NoProfile— ajoutez cette option si le script peut fonctionner sans profil utilisateur. Il empêche le chargement du profil utilisateur, ce qui accélère l'exécution du script ; - Vous pouvez activer les options utiles suivantes dans leParamètreslanguette:
Autoriser l'exécution de la tâche à la demande
Si la tâche en cours ne se termine pas à la demande, forcez-la à s'arrêter
Ne démarrez pas une nouvelle instance - Enregistrez les paramètres de la tâche. Vérifiez que la nouvelle tâche apparaît dans lePlanificateur de tâchesenfichable. Cliquez sur une tâche et sélectionnezCourirpour le tester.


Si le script PowerShell a été exécuté avec succès, un message s'affichera dans le résultat de la dernière exécution :The operation completed sucessfully (0x0).
Pour enregistrer toutes les actions dans un fichier journal texte, nous vous recommandons d'ajouter une simple fonction de journalisation au script PowerShell. Cela permet de visualiser des informations détaillées sur toutes les actions effectuées à tout moment.
- Utilisez leHistoirepour afficher l'historique et les résultats des exécutions de tâches précédentes. L'historique des tâches n'est pas enregistré par défaut dans le Planificateur de tâches (cliquez sur l'icôneActiver l'historique de toutes les tâcheslien dans le volet Actions).


Vous pouvez également créer une telle tâche du planificateur pour exécuter un script PowerShell à partir d'une invite de commande :
$TaskName="CheckOutlookMailbox"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Trigger.Repetition = (New-ScheduledTaskTrigger -once -at "12am" -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Minutes 10)).repetition
$User= "NT AUTHORITYSYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File C:PSOutlook_Email_to.ps1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
Il y a quelques éléments supplémentaires à prendre en compte lors de l'exécution de scripts PowerShell via le Planificateur de tâches Windows :
- Pour exécuter le script dans l'environnement PowerShell Core, exécutez
pwsh.exeau lieu depowershell.exe. - Si d'autres utilisateurs ont accès à l'ordinateur sur lequel vous exécutez le script PowerShell avec des droits privilégiés, assurez-vous d'avoir modifié les autorisations d'accès NTFS sur le fichier PS1 afin qu'ils ne puissent pas le modifier.
- Si la tâche est exécutée en tant qu'utilisateur non privilégié, son compte doit être ajouté à la politique de sécurité localeConnectez-vous en tant que travail par lots (gpedit.msc-> Configuration ordinateur->Paramètres Windows->Paramètres de sécurité->Politiques locales->Attribution des droits d'utilisateur).Un avertissement apparaîtra lors de la création d'une telle tâche :
This task requires that the user account specified has Log on as batch job rights


- Dans un domaine AD, vous pouvez utiliser le GPO pour exécuter des scripts PowerShell lorsqu'un utilisateur se connecte ou se déconnecte, ou lorsqu'un ordinateur démarre ou s'éteint. De tels scripts sont connus sous le nom descripts de connexion.













