Comment exécuter un script PowerShell à partir du Planificateur de tâches
Sep 16, 2024
Le Planificateur de tâches Windows permet aux administrateurs d'exécuter automatiquement des scripts PowerShell selon un calendrier défini ou en réponse à des événements système. Cela améliore la cohérence, économise du temps et réduit les erreurs humaines pour des tâches telles que les sauvegardes, les mises à jour, la surveillance et les nettoyages. Les scripts peuvent être programmés via l'interface graphique ou les cmdlets PowerShell (Register-ScheduledTask, New-ScheduledTaskTrigger, etc.). Les meilleures pratiques incluent l'utilisation de comptes à privilèges minimaux, la journalisation et la gestion des erreurs, la signature des scripts et des révisions régulières pour prévenir les abus.
Introduction
Le Planificateur de tâches Windows permet aux utilisateurs de programmer des tâches pour qu'elles s'exécutent à une date et une heure spécifiques, selon un calendrier défini ou lorsqu'elles sont déclenchées par certains événements. Cet outil intégré des systèmes d'exploitation Windows aide à améliorer l'efficacité et à garantir l'exécution fiable de tâches répétitives. Dans ce blog, nous allons vous montrer comment exécuter un PowerShell script from Task Scheduler et comment créer des tâches planifiées à l'aide de PowerShell.
Configuration de scripts PowerShell pour l'automatisation
Comprendre le Planificateur de tâches
La bibliothèque du Planificateur de tâches est une collection de toutes les tâches définies, organisées en dossiers. Pour chaque tâche, l'interface graphique fournit les onglets suivants :
- Général — Le nom et la description des tâches, le compte sous lequel elles doivent s'exécuter et d'autres options de sécurité.
- Déclencheurs — Les conditions qui initient une tâche, qui peuvent être basées sur le temps (par exemple, quotidien, hebdomadaire), basées sur un événement (par exemple, au démarrage du système ou à la connexion de l'utilisateur), ou personnalisées
- Actions — Les opérations exécutées lorsqu'une tâche est déclenchée, telles que le démarrage d'un programme.
- Conditions — Critères qui contrôlent l'exécution d'une tâche en fonction de l'état de l'ordinateur, comme le fait de ne s'exécuter que lorsque l'ordinateur est inactif pendant une période spécifique
- Paramètres — Configurations supplémentaires qui déterminent comment et quand une tâche est exécutée, telles que le redémarrage d'une tâche si elle échoue ou son arrêt si elle dure plus longtemps que prévu
- Historique — Un historique des exécutions de tâches, incluant les heures de début, de fin, et toutes les erreurs ou avertissements rencontrés
Avantages de l'utilisation de Task Scheduler pour automatiser les scripts PowerShell
L'automatisation de scripts PowerShell via le PowerShell Task Scheduler offre de nombreux avantages, y compris les suivants :
- Économie de temps — Lorsque vous exécutez des scripts PowerShell à partir du Planificateur de tâches, vous pouvez économiser un temps considérable qui serait autrement consacré à une exécution manuelle. Cela est particulièrement avantageux pour les scripts qui doivent être exécutés en dehors des heures de travail.
- Cohérence — L'automatisation réduit le risque d'erreurs humaines. Un script PowerShell planifié exécutera exactement les mêmes opérations dans le même ordre à chaque fois.
- Fiabilité — Avec le Planificateur de tâches, vous pouvez garantir que les tâches de maintenance critiques, telles que les routines de sauvegarde et de nettoyage, sont exécutées régulièrement. Cela augmente la fiabilité du système et réduit le risque de perte de données ou de défaillances du système.
- Efficacité des ressources — En planifiant l'exécution des scripts pendant les périodes de faible utilisation du système, vous pouvez vous assurer que les tâches intensives ne dégradent pas les performances du système aux heures de pointe.
- Flexibilité — Le Planificateur de tâches offre une variété d'options de planification, y compris la capacité d'exécuter des tâches au démarrage du système, à la connexion, en cas d'inactivité ou en réponse à des événements spécifiques. Ce niveau de contrôle vous permet d'adapter l'exécution de scripts à vos exigences spécifiques.
- Gestion des erreurs — Vous pouvez configurer des tâches planifiées pour tenter une nouvelle exécution en cas d'échec d'un script, envoyer des emails après l'achèvement ou l'échec d'une tâche, et écrire des journaux d'événements. Cela permet un dépannage en temps opportun et vous tient informé de l'état de santé des processus automatisés.
- Sécurité — Avec le Planificateur de tâches, les scripts PowerShell peuvent s'exécuter sous des comptes d'utilisateurs spécifiques, y compris ceux disposant de privilèges élevés, sans que l'utilisateur ait besoin d'être connecté. Cela aide à garantir que les tâches sensibles sont exécutées de manière sécurisée et permet l'automatisation des scripts nécessitant des privilèges supérieurs. Cependant, puisque les adversaires peuvent exploiter les tâches planifiées et déclenchées à des fins malveillantes, vous devriez utiliser un système d'audit ou de suivi pour surveiller les tâches en vue d'une utilisation abusive potentielle. Netwrix Access Analyzer est un bon exemple d'outil pouvant atténuer les activités malveillantes.
- Intégration et extensibilité — La planification de scripts PowerShell permet une automatisation sophistiquée qui peut réagir aux événements système, orchestrer plusieurs tâches et plus encore.
- Gestion de flux de travail complexes — Le Planificateur de tâches peut gérer des flux de travail complexes, tels que l'enchaînement de tâches ou l'utilisation de logique conditionnelle basée sur le succès ou l'échec d'une tâche antérieure. Cela est inestimable pour les scénarios où plusieurs tâches interdépendantes doivent être soigneusement orchestrées.
- Facilité d'utilisation — Malgré ses fonctionnalités avancées, Task Scheduler dispose d'une interface graphique intuitive qui simplifie le processus de configuration et de gestion des tâches automatisées. Pour les utilisateurs plus expérimentés, Task Scheduler peut également être configuré et géré à l'aide d'outils en ligne de commande ou de cmdlets PowerShell.
Étapes pour créer un planning pour un script PowerShell
Avant de planifier un script PowerShell avec le Planificateur de tâches, assurez-vous que le script est enregistré avec l'extension .ps1 et qu'il a été testé pour garantir son bon fonctionnement.
Ensuite, suivez les étapes suivantes :
- Ouvrez le Planificateur de tâches : Appuyez sur Win + R, tapez taskschd.msc dans la boîte de dialogue Exécuter et appuyez sur Entrée.
- Dans le volet Actions à droite, cliquez sur Créer une tâche.
- Dans l'onglet General, procédez comme suit :
- Entrez un nom et une description pour votre tâche.
- Configurez les options de sécurité appropriées. Par exemple, sélectionner Run whether user is logged on or not garantira que la tâche s'exécute même si vous n'êtes pas connecté. Si le script nécessite des droits d'administrateur, cochez Run with highest privileges.
Cliquez sur OK pour enregistrer vos modifications.
- Allez à l'onglet Triggers et cliquez sur Nouveau. Dans le volet New Trigger, choisissez les éléments suivants :
- Quand la tâche doit commencer
- La fréquence à laquelle elle doit s'exécuter, comme une fois, quotidiennement ou hebdomadairement
- Toutes options supplémentaires dont vous avez besoin, telles que l'arrêt de la tâche si elle dure plus longtemps que le temps spécifié
Cliquez sur OK pour enregistrer vos modifications.
- Allez à l'onglet Actions.Cliquez sur Nouveau pour configurer une nouvelle action afin d'exécuter votre script PowerShell :
- Depuis le menu déroulant Action, sélectionnez Démarrer un programme.
- In the Program/script field, enter powershell.exe.
- Dans le champ Add arguments, saisissez ce qui suit, en veillant à spécifier le chemin complet vers votre script : -File C:\Scripts\scriptname.ps1
- Dans le champ Start in , indiquez le répertoire où se trouve le script, si nécessaire. Cela n'est généralement pas requis à moins que votre script ne dépende de chemins relatifs.
Cliquez sur OK pour enregistrer vos modifications
- Cliquez sur OK et allez à l'onglet Conditions. Définissez les conditions sous lesquelles la tâche doit s'exécuter. Par exemple, vous pouvez spécifier que la tâche ne doit s'exécuter que si l'ordinateur est alimenté par secteur ou uniquement s'il est connecté à un réseau spécifique. Cliquez sur OK pour enregistrer vos sélections.
- Ensuite, allez dans l'onglet Settings et configurez ce qui suit :
- Autoriser l'exécution de la tâche à la demande — Cochez ceci si vous souhaitez pouvoir exécuter manuellement la tâche.
- Si la tâche échoue — Précisez ce qui doit se passer en cas d'échec de la tâche, comme le redémarrage de la tâche.
- Arrêtez la tâche si elle dure plus longtemps que — Définissez une limite de temps si applicable.
- Si la tâche est déjà en cours — Choisissez ce qui devrait se passer si la tâche est déclenchée alors qu'elle est déjà en cours.
- Cliquez sur OK pour finaliser votre tâche. Vous serez invité à saisir les identifiants pour le compte utilisateur sous lequel la tâche s'exécutera.
Configuration avancée et meilleures pratiques
Contrôle de l'exécution et de la visibilité des scripts
Pour contrôler l'exécution et la visibilité des scripts lors de l'utilisation de Task Scheduler, vous pouvez utiliser les paramètres suivants dans le champ Add arguments de l'onglet Action:
- NoExit — Ajoutez ce paramètre pour empêcher la fenêtre PowerShell ou l'invite de commande de se fermer automatiquement après l'exécution du script. Cette option est utile pour le débogage ou lorsque vous souhaitez que la fenêtre de la console reste ouverte pour vérifier directement la sortie.
- Commande — Utilisez ce paramètre pour spécifier le chemin complet d'un script à exécuter et les arguments nécessaires.
Par exemple, vous pourriez spécifier ce qui suit dans le champ Add arguments :
-NoExit -Command -File C:\Scripts\InstallOfSoftware.ps1
Redirection de la sortie vers un fichier texte ou d'autres destinations pour enregistrer l'activité du script
Dépannage des problèmes courants du Planificateur de tâches Windows
Voici quelques problèmes courants qui peuvent empêcher vos tâches planifiées de s'exécuter comme prévu et comment les résoudre.
La tâche ne démarrera pas ou ne s'exécutera pas.
- Assurez-vous que le compte utilisateur exécutant la tâche dispose des autorisations nécessaires pour exécuter la tâche et accéder à tous les fichiers ou répertoires référencés par la tâche.
- Vérifiez soigneusement les paramètres de configuration de la tâche, tels que les paramètres de déclenchement, les paramètres d'action et les conditions.
- Assurez-vous que la tâche est activée.
- Si la tâche utilise un compte utilisateur spécifique pour s'exécuter, vérifiez si le mot de passe a été modifié et mettez-le à jour pour la tâche si nécessaire.
La tâche s'exécute manuellement mais pas automatiquement.
- Vérifiez que les paramètres du déclencheur sont corrects ; les problèmes courants incluent des heures de début incorrectes, des planifications mal configurées.
- Vérifiez les conditions qui pourraient empêcher l'exécution de la tâche, comme le fait qu'elle ne s'exécutera que si l'ordinateur est inactif pendant un temps spécifique. Si la tâche est programmée pour s'exécuter pendant les périodes d'inactivité ou lorsque l'ordinateur n'est pas utilisé, les paramètres d'alimentation tels que le mode veille ou d'hibernation peuvent empêcher l'exécution. Ajustez les paramètres d'alimentation pour assurer que le système reste actif afin que la tâche puisse s'exécuter.
La tâche s'arrête de manière inattendue ou se comporte de manière incorrecte.
- Check whether there is enough memory, CPU or disk space available for the task to run smoothly.
- Si la tâche implique l'exécution d'un script, assurez-vous que le script fonctionne correctement en dehors du Planificateur de tâches. Pensez à la manière dont les variables d'environnement, les chemins ou les autorisations pourraient différer dans les deux situations.
La tâche échoue avec des codes d'erreur spécifiques.
Consultez le code d'erreur indiqué dans l'historique de la tâche ou le journal des événements pour obtenir des informations actuelles sur le problème et la manière de le résoudre.
La tâche s'exécute mais ne produit aucun effet.
- Vérifiez que l'action définie pour la tâche, par exemple, le démarrage d'un programme, est configurée correctement.
- Si le script ne s'exécute pas en raison de restrictions de politique, envisagez d'ajouter l'argument -ExecutionPolicy Bypass pour passer outre la politique d'exécution du système et permettre l'exécution du script.
- Assurez-vous que les chemins d'accès aux fichiers exécutables ou scripts sont corrects et que tous les arguments de ligne de commande sont correctement spécifiés.
- Si la tâche doit générer un fichier ou une autre destination, assurez-vous que les chemins sont corrects et que le compte exécutant dispose des autorisations d'écriture nécessaires.
Demandez un essai gratuit de Monitor and Secure Scheduled Tasks
Exemples pratiques pour des cas d'utilisation courants
Exemples de scripts pour des tâches administratives courantes
Voici quelques cas d'utilisation pratiques pour des tâches administratives courantes que vous pourriez vouloir automatiser à l'aide du Planificateur de tâches Windows, accompagnés de scripts d'exemple.
Sauvegarder un dossier
Le script suivant peut être utilisé pour sauvegarder un dossier du lecteur C vers un dossier du lecteur D local :
Copy-Item -Path "C:\Source\*" -Destination "D:\Backup" -Recurse -Force
Installez les mises à jour logicielles
Pour mettre à jour automatiquement les logiciels ou composants système, utilisez ce script :
Install-WindowsUpdate -AcceptAll -AutoReboot
Envoyer des notifications aux utilisateurs
Pour envoyer des rappels concernant les événements à venir à une liste de distribution d'emails, utilisez ce script :
Send-MailMessage -To "AbbeyCrawford@milkyway.com" -From "AbbeyTucker@milkyway.com" -Subject "Daily Meeting Reminder" -Body "This is a reminder about the meeting scheduled for 10:00 AM." -SmtpServer "smtp.milkyway.com"
Effectuez des analyses de sécurité
Pour exécuter automatiquement des analyses de sécurité afin de détecter des logiciels malveillants ou des vulnérabilités, utilisez ce script :
Start-MpScan -ScanType QuickScan
Nettoyez les fichiers temporaires
Ce script supprime les fichiers temporaires des répertoires spécifiés :
Get-ChildItem -Path C:\Windows\Temp\*, $env:TEMP\* -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
Redémarrez un service
Pour redémarrer un service, tel qu'un serveur web ou un service Microsoft SQL server, vous pouvez utiliser des commandes comme les suivantes :
Restart-Service -Name W3SVC
Restart-Service -Name MSSQLSERVER
Planification de scripts PowerShell complexes
Vous pouvez également planifier des scripts PowerShell plus complexes. Comme illustré dans les exemples ci-dessous, il est recommandé d'inclure des commentaires décrivant l'objectif des différentes sections d'un script.
Rapport sur l'utilisation de l'espace disque
Ce script offre un aperçu rapide de l'utilisation de l'espace disque :
# Script to report disk space usage
Get-PSDrive -PSProvider FileSystem |
Select-Object Name, @{Name="UsedGB";Expression={"{0:N2}" -f (($_.Used - $_.Free)/1GB)}}, @{Name="FreeGB";Expression={"{0:N2}" -f ($_.Free/1GB)}}, @{Name="TotalGB";Expression={"{0:N2}" -f ($_.Used/1GB)}} |
Format-Table -AutoSize
Surveillez la santé du système
Pour suivre les performances du système au fil du temps, vous pouvez utiliser ce script PowerShell pour consigner l'utilisation du processeur, la mémoire et l'espace disque dans un fichier :
# Define the log file path
$logFile = "C:\SystemHealthLog.txt"
# Function to get system health metrics
function Get-SystemHealth {
# Get CPU usage
$cpuUsage = Get-Counter '\Processor(_Total)\% Processor Time'
# Get memory usage
$memoryUsage = Get-Counter '\Memory\Available MBytes'
# Get disk space usage for C: drive
$diskSpace = Get-PSDrive -Name C
$usedSpace = $diskSpace.Used / 1MB
$freeSpace = $diskSpace.Free / 1MB
$totalSpace = $diskSpace.Used + $diskSpace.Free / 1MB
# Format output
$cpuUsageFormatted = "{0:N2}%" -f $cpuUsage.CounterSamples[0].CookedValue
$memoryUsageFormatted = "{0:N2} MB" -f $memoryUsage.CounterSamples[0].CookedValue
$diskSpaceFormatted = "Used: {0:N2} MB, Free: {1:N2} MB, Total: {2:N2} MB" -f $usedSpace, $freeSpace, $totalSpace
# Write to log file
$logEntry = "Date and Time: $(Get-Date) - CPU Usage: $cpuUsageFormatted, Memory Available: $memoryUsageFormatted, Disk Space: $diskSpaceFormatted"
Add-Content -Path $logFile -Value $logEntry
}
# Run the health check
Get-SystemHealth
Modification ou suppression de tâches planifiées
Avant de modifier ou de supprimer une ou plusieurs tâches planifiées, vous voudrez peut-être examiner toutes les tâches existantes. Pour voir la liste des tâches, exécutez simplement la cmdlet Get-ScheduledTask.
Modification d'une tâche planifiée
Pour modifier une tâche, faites un clic droit dessus et sélectionnez Propriétés, comme indiqué ci-dessous. Ensuite, modifiez les paramètres requis et cliquez sur OK pour enregistrer vos modifications.
Suppression d'une tâche planifiée
Pour supprimer une tâche planifiée, faites un clic droit dessus, sélectionnez Supprimer et confirmez l'action.
Création de tâches planifiées avec des scripts PowerShell
Introduction à la planification PowerShell
Pour créer des tâches planifiées, vous avez une autre option en plus du Planificateur de tâches : PowerShell. La création et la gestion de tâches planifiées directement depuis l'interface de planification de PowerShell peuvent considérablement améliorer la productivité, la précision et la fiabilité des sessions, en particulier lors de la gestion de systèmes à distance via une CimSession.
Voici quelques-unes des principales commandes PowerShell utilisées pour créer et gérer des tâches planifiées :
- New-ScheduledTask — Crée un nouvel objet de tâche planifiée dans PowerShell
- Register-ScheduledTask — Enregistre une nouvelle tâche planifiée
- New-ScheduledTaskAction — Définit les actions des tâches planifiées
- New-ScheduledTaskPrincipal — Stocke le compte utilisateur sous lequel la tâche sera exécutée
- New-ScheduledTaskSettingsSet — Définit les paramètres des tâches planifiées
- New-ScheduledTaskTrigger — Définit les déclencheurs de tâches planifiées
Avantages de l'utilisation de PowerShell pour la gestion des tâches planifiées
Les avantages de l'utilisation de PowerShell pour exécuter des tâches planifiées incluent les suivants :
- Facilité d'utilisation — Il est facile de spécifier des déclencheurs, conditions et actions complexes.
- Flexibilité — Vous pouvez écrire et exécuter des scripts sophistiqués capables de réaliser une large gamme de tâches, allant de simples nettoyages de fichiers à des diagnostics et réparations systèmes complexes.
- Économie de temps — L'utilisation d'une tâche planifiée PowerShell pour exécuter un script PowerShell élimine le besoin d'effectuer manuellement des tâches répétitives ou complexes.
- Dépannage plus facile — Les scripts PowerShell peuvent consigner des informations détaillées sur les erreurs ou même tenter de les corriger automatiquement.
- Exécution à distance — Les tâches planifiées peuvent être exécutées et régulées sur plusieurs machines. Cela est particulièrement avantageux dans les environnements réseau de grande taille.
- Sécurité — PowerShell inclut de nombreuses fonctionnalités de sécurité, telles que la politique d'exécution et les scripts signés, pour aider à garantir que seuls les scripts autorisés s'exécutent sur votre système.
- Efficacité — Utiliser PowerShell pour planifier des tâches consomme généralement moins de ressources système que les outils d'automatisation tiers.
- Adaptabilité — Les tâches planifiées dans PowerShell peuvent être facilement modifiées, répliquées ou étendues pour répondre aux besoins évolutifs.
Création d'une tâche planifiée avec PowerShell
Un script PowerShell pour créer une tâche planifiée inclut les éléments suivants :
- $action — Ceci spécifie ce que la tâche va faire, comme exécuter un script PowerShell, lancer une application ou exécuter une commande :
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\InstallOfSoftware.ps1"
- $trigger — Ceci spécifie quand la tâche sera exécutée, comme à une heure spécifique, quotidiennement ou hebdomadairement, ou en fonction des événements système :
$trigger = New-ScheduledTaskTrigger -Daily -At "10:00AM"
- $principal — Ceci spécifie le compte utilisateur sous lequel la tâche sera exécutée :
$principal = New-ScheduledTaskPrincipal -UserId “NT AUTHORITY\SYSTEM” -LogonType Password
- $settings — Cela inclut des options telles que la gestion des échecs de tâches, les conditions d'exécution et le comportement sur batterie :
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
- Register-ScheduledTask — Ceci enregistre la tâche avec le Planificateur de tâches :
Register-ScheduledTask -TaskName “Installation of Software" -Action $action -Trigger $trigger -Principal $principal -Settings $settings
Ci-dessous, vous pouvez voir l'exécution du script complet :
Considérations de sécurité et meilleures pratiques
Implications de sécurité des tâches planifiées
Lorsque vous planifiez des tâches, que ce soit à l'aide du Planificateur de tâches ou de PowerShell, assurez-vous de prêter attention aux préoccupations de sécurité suivantes :
- Gestion des autorisations — Les tâches planifiées s'exécutent avec les permissions du compte sous lequel elles sont programmées, elles peuvent donc être détournées. Ce risque est plus élevé si le compte dispose d'un accès privilégié. Assurez-vous d'exécuter les tâches planifiées en utilisant des comptes qui ont les permissions minimales nécessaires.
- Sécurité des scripts — Les scripts ou exécutables appelés par les tâches planifiées peuvent eux-mêmes être des vecteurs de vulnérabilités de sécurité. Par exemple, des acteurs malveillants peuvent remplacer ou modifier des scripts stockés dans des répertoires non protégés pour exécuter des commandes nuisibles.
- Le détournement de processus — Si une tâche planifiée est prévisible et s'exécute avec des privilèges élevés, un attaquant pourrait remplacer le script que la tâche doit exécuter par un code malveillant.
- Audit et responsabilité — Il est essentiel de conserver des journaux détaillés de la création, de la modification et de l'exécution des tâches planifiées afin de détecter et de répondre aux activités malveillantes.
- Déni de service — En planifiant des tâches qui consomment des ressources système excessives à des moments critiques, un attaquant pourrait perturber la capacité du système hôte à remplir ses fonctions prévues.
Exécution de scripts avec le contexte de sécurité approprié et les implications de l'utilisation de comptes hautement privilégiés
Pour minimiser votre surface d'attaque, exécutez toujours les scripts sous un compte qui dispose des privilèges les plus restreints nécessaires pour la tâche, et évitez d'exécuter des scripts avec des droits administratifs. Pour y parvenir, comprenez quelles ressources, permissions et limites de régulation un script requiert. Par exemple, le script doit-il modifier des fichiers système, accéder à des données spécifiques ou communiquer sur le réseau ?
De plus, utilisez des stratégies d'exécution pour contrôler les conditions dans lesquelles les scripts peuvent s'exécuter. Par exemple, vous pouvez restreindre le système pour exécuter des scripts uniquement s'ils sont signés par un éditeur de confiance.
Pour les scripts qui doivent s'exécuter en tant que service, envisagez d'utiliser un compte de service géré Windows (MSA) ou un compte de service géré de groupe (gMSA), qui sont plus sécurisés car leurs mots de passe sont gérés automatiquement.
Meilleures pratiques pour la création de tâches planifiées
Pour maximiser les avantages de l'utilisation des tâches planifiées, suivez ces meilleures pratiques :
- Assurez-vous que chaque tâche ait un objectif clair. Documentez à la fois ce que la tâche fait et pourquoi elle est nécessaire pour aider ceux qui pourraient travailler avec la tâche à l'avenir.
- Établissez des conventions de nommage claires. Pour éviter la confusion et l'exécution inappropriée des tâches, assurez-vous que chaque tâche planifiée possède un chemin de tâche unique.
- Révisez et testez. Examinez attentivement les scripts avant de les exécuter, surtout s'ils proviennent de sources externes, en recherchant tout code suspect. Avant de déployer une tâche planifiée dans un environnement de production, testez-la soigneusement dans un environnement de préproduction ou de développement. Il est également recommandé de maintenir un dépôt de scripts approuvés.
- Mettez en œuvre la gestion des erreurs. Assurez-vous que chaque script peut gérer les erreurs courantes de manière élégante et alerter les membres de l'équipe concernés lorsqu'il y a un problème nécessitant une attention.
- Comprenez les dépendances. Si une tâche dépend de services ou de données externes, assurez-vous qu'il y a des vérifications de disponibilité et une gestion élégante des pannes ou des retards.
- Prenez en compte l'utilisation des ressources. Cherchez des moyens de rendre les tâches moins gourmandes en ressources, par exemple en modifiant leur logique ou leur fréquence d'exécution. Les tâches doivent être exécutées aussi souvent que nécessaire, mais pas si fréquemment qu'elles créent des problèmes de performance. Lorsque vous choisissez le moment de l'exécution des tâches, prenez en compte des facteurs tels que l'activité d'autres systèmes et les conflits potentiels.
- Portez une attention particulière à la sécurité. En plus des directives de sécurité fournies ci-dessus, assurez-vous d'utiliser des mesures d'authentification et d'autorisation appropriées pour les tâches nécessitant un accès à des ressources sécurisées, et veillez à ce que les tâches n'exposent pas par inadvertance des données sensibles.
- Évitez de vous fier aux paramètres par défaut pour les tâches critiques. Personnalisez la configuration des tâches pour répondre à vos besoins spécifiques.
- Stockez les scripts dans un emplacement sécurisé. Assurez-vous que seuls les utilisateurs qui ont besoin d'exécuter ou de modifier les scripts y aient accès.
- Signez vos scripts. Dans la mesure du possible, signez vos scripts avec un certificat numérique émis par une Autorité de Certification (CA) de confiance. Cela permet non seulement de vérifier la paternité du script mais aussi de s'assurer que le script n'a pas été altéré depuis sa signature.
- Mettez en œuvre une surveillance et des alertes. Les journaux sont inestimables pour diagnostiquer les problèmes et comprendre les actions d'une tâche. Les outils qui informent les administrateurs d'une activité inhabituelle de script ou d'une dégradation des performances permettent une réponse plus rapide.
- Examinez et mettez à jour régulièrement les tâches planifiées. Cela inclut la mise à jour de toutes les dépendances, l'ajustement des plannings en fonction des nouveaux besoins de l'entreprise et la mise hors service des tâches qui ne sont plus nécessaires.
Conclusion
Le Planificateur de tâches Windows permet aux utilisateurs professionnels et aux administrateurs d'exécuter des scripts PowerShell à des dates et heures spécifiques de manière régulière, comme tous les jours ou toutes les semaines, ou lorsque certaines conditions sont remplies. Automatiser des tâches à l'aide du Planificateur de tâches permet de gagner du temps tout en garantissant que les tâches sont effectuées avec précision et fiabilité. Les utilisateurs plus avancés peuvent utiliser PowerShell pour créer et gérer des tâches planifiées.
Lors de la planification de scripts, assurez-vous de suivre les meilleures pratiques telles que la documentation de l'objectif de la tâche, l'utilisation de la gestion des erreurs et de la journalisation dans les scripts, et l'utilisation du least privilege principle pour éviter des permissions excessives, ce qui peut représenter une menace pour la sécurité si elles sont compromises et utilisées par des adversaires.
FAQ
Qu'est-ce que le Planificateur de tâches Windows ?
Windows Task Scheduler is a built-in tool in the Windows operating system that enables users to schedule tasks and processes to run automatically. With Task Scheduler, you can set up tasks to run at a specified day and time or at a certain interval like daily or weekly.
Pourquoi devrais-je utiliser le Planificateur de tâches pour automatiser les scripts PowerShell ?
By choosing to run PowerShell scripts from Task Scheduler, you can automate repetitive tasks, which ensures that they are performed reliably and accurately without further effort on your part.
How do I open Task Scheduler?
Press Win + R to open the Run dialog. Type taskschd.msc and press Enter.
How do I create a new task in Task Scheduler?
Click on Create Task in the Actions pane on the right side of the Task Scheduler window. Provide a name and description for the task; choose appropriate settings for the Action, Triggers, Conditions and Settings tabs; and click Save.
What are the benefits of naming and describing a task?
Providing a useful name and clear description that explains what the task does and why it is needed helps ensure that each task has a clear purpose and facilitates future maintenance by others who work with the task.
How do I determine the trigger for a scheduled task?
On the Trigger tab for a task, you can specify when the task should run, such as on schedule, at system startup or upon user logon, as well the repetition interval and other criteria.
How do I configure Task Scheduler to run a PowerShell script?
- Go to the Actions tab, click New andselect Start a program from the dropdown menu.
- In the Program/script field, input powershell.exe.
- In the Add arguments field, enter the following, replacing the argument InstallofSoftware.ps1 with the name of your script:
-File C:\Scripts\InstallofSoftware.ps1
How can I set up tasks to run even when the user is not logged on?
On the General tab of the task, select the option Run whether a user is logged on or not.
How do I manage task privileges and ensure scripts stop after a specified duration?
Tasks have the privileges of the account they are run under. You can specify the account to run the task on the General tab.
To ensure a script stops after a given duration, on the Settings tab, select Stop the task if it runs longer than and choose the desired number of hours or days.
How do I control script execution visibility?
You can control script execution and visibility by adding the -NoExit or -Command parameter in the Add Argument field on the Action tab.
What tips can help troubleshoot tasks that do not run as expected?
Password expiration or changes can cause a task to fail. Improperly configured or maliciously designed scheduled tasks (for example, tasks that consume excessive system resources) can lead to a denial of service on the host machine, hurting its availability and performance.
How do I modify an existing scheduled task?
Right-click on the task in the Windows Task Scheduler library, select Properties and make the desired changes to the task’s settings.
How do I delete a scheduled task?
Right-click on the task in the Task Scheduler library and choose Delete.
What are the advantages of using PowerShell for scheduling tasks?
Compared to the Task Scheduler GUI, PowerShell provides more granular control over task configuration, error handling and logging, and makes it easier to define custom scheduling logic. PowerShell also enables you to schedule and run tasks on multiple remote systems from a central location.
What are the New-ScheduledTaskTrigger and Register-ScheduledTask cmdlets used for?
The New-ScheduledTaskTrigger cmdlet is used to define triggers for the task, and the Register-ScheduledTask cmdlet is used to register the task with Windows Task Scheduler.
What are the security implications of scheduled tasks?
Running a scheduled task with a highly privileged accounts increases security risks if the account is compromised, so always choose the account with the least privilege principle in mind.
How should I run scripts with the appropriate security context?
Most important, run scripts under an account with the least privileges necessary to complete the task, and use managed service accounts (MSAs) or group managed service accounts (gMSAs) when appropriate. Consider using execution policies to allow restrict only scripts that are signed by a trusted publisher, and whenever possible, sign your scripts with a digital certificate issued by a trusted Certificate Authority.
What are the best practices for organizing and managing scheduled tasks?
Key best practices include storing scripts in a secure location with access permissions controlled and evaluating scripts in a test environment before implementing them in production.
FAQ
Partager sur
En savoir plus
À propos de l'auteur
Tyler Reese
Vice-président de la gestion de produit, CISSP
Avec plus de deux décennies d'expérience dans l'industrie de la sécurité logicielle, Tyler Reese connaît intimement les défis d'identité et de sécurité en rapide évolution auxquels les entreprises sont confrontées aujourd'hui. Actuellement, il occupe le poste de directeur de produit pour le portefeuille Netwrix Identity and Access Management, où ses responsabilités incluent l'évaluation des tendances du marché, la définition de la direction de la gamme de produits IAM et, en fin de compte, la satisfaction des besoins des utilisateurs finaux. Son expérience professionnelle s'étend de la consultation en IAM pour des entreprises du Fortune 500 à l'architecture d'entreprise d'une grande société de vente directe aux consommateurs. Il détient actuellement la certification CISSP.
En savoir plus sur ce sujet
Supprimer le fichier avec Powershell s'il existe
PowerShell Write to File : "Out-File" et techniques de sortie de fichier
Comment créer de nouveaux utilisateurs Active Directory avec PowerShell
Comment exécuter un script PowerShell
Qu'est-ce que PowerShell ? Un guide complet de ses fonctionnalités et utilisations