Presque chaque administrateur système doit faire face à des tâches planifiées. Elles sont incroyablement utiles pour faire quelque chose en fonction de divers déclencheurs, mais elles nécessitent beaucoup d’efforts manuels pour être configurées correctement.
L’avantage des tâches planifiées est que vous pouvez en construire une avec un niveau profond de sophistication avec des options de déclenchement et divers contextes de sécurité. Mais là où règne la complexité, des erreurs de configuration peuvent survenir. Lorsque vous développez ces scripts d’automatisation, vous pouvez créer une tâche planifiée avec PowerShell pour faciliter le processus. L’utilisation de PowerShell permet de standardiser le travail de gestion et de configuration lié aux tâches planifiées complexes, ce qui présente l’avantage supplémentaire d’éviter les erreurs habituelles qui découlent de la saisie manuelle.
Construire une action de tâche planifiée
Au minimum, une tâche planifiée possède une action, un déclencheur et un groupe de paramètres associés. Une fois que vous avez créé la tâche, vous devez également l’enregistrer sur le système. Vous devez effectuer chaque action séparément pour créer une seule tâche planifiée.
Pour créer l’action, utilisez le cmdlet New-ScheduledTaskAction qui spécifie la commande à exécuter. Créons une action qui devient un peu méta et invoque un script PowerShell.
La commande ci-dessous donne un exemple d’invocation du moteur PowerShell et de passage d’un script à celui-ci en utilisant tous les commutateurs de ligne de commande appropriés pour que le script s’exécute de manière non interactive. Le fichier de script réside sur la machine sur laquelle la tâche planifiée sera exécutée.
$Action = New-ScheduledTaskAction -Execute 'pwsh.exe' -Argument '-NonInteractive -NoLogo -NoProfile -File "C:\MyScript.ps1"'
Créer un déclencheur
Puis, vous avez besoin d’un déclencheur. Vous avez plusieurs valeurs disponibles, mais cette tâche utilisera une heure spécifique — 3 heures du matin — pour exécuter ce script une fois. Pour une liste complète des options, consultez la page d’aide du cmdlet New-ScheduledTaskTrigger.
$Trigger = New-ScheduledTaskTrigger -Once -At 3am
Créer des paramètres
Puis, créez la tâche planifiée à l’aide de la commande New-ScheduledTask. Cette commande nécessite une valeur pour le paramètre Settings, même si vous n’utilisez pas de spécial. C’est pourquoi vous exécutez New-ScheduledTaskSettingsSet pour créer un objet à passer ici.
$Settings = New-ScheduledTaskSettingsSet
Créer la tâche planifiée
Après avoir assigné tous les objets comme variables, passez chacune de ces variables à la commande New-ScheduledTask pour créer un objet de tâche planifiée.
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings
Enregistrer la tâche planifiée
À ce stade, vous avez créé un objet de tâche planifiée en mémoire. Pour ajouter la tâche planifiée sur l’ordinateur, vous devez enregistrer la tâche planifiée à l’aide du cmdlet Register-ScheduledTask.
L’exemple ci-dessous enregistre une tâche planifiée à exécuter sous un nom d’utilisateur particulier. Pour exécuter la tâche sous le contexte d’un certain utilisateur, vous devez fournir le mot de passe. Il est utile de consulter la documentation de la commande Register-ScheduledTask pour voir toutes les options à utiliser avec ce cmdlet.
Register-ScheduledTask -TaskName 'My PowerShell Script' -InputObject $Task -User 'username' -Password 'passhere'
Si vous avez suivi toutes les étapes correctement, vous devriez voir votre tâche planifiée nouvellement créée dans le planificateur de tâches.
Après que la tâche planifiée soit enregistrée et apparaisse dans le planificateur de tâches, vous pouvez maintenant exécuter le cmdlet Get-ScheduledTask pour voir la tâche.