Comment exécuter automatiquement des scripts PowerShell sur Windows 10
PowerShell intègre de multiples niveaux de protection visant à contrer l'exécution de codes ou de scripts potentiellement malveillants. Par exemple, par défaut, le lancement d'un script téléchargé depuis internet est bloqué, à moins que la politique d'exécution de PowerShell ne soit ajustée. Une autre mesure de sécurité consiste à empêcher l'exécution d'un script par un simple double-clic. En effet, les fichiers PS1 ne sont pas directement associés à PowerShell, et la seule manière de lancer un script est de le sélectionner avec le bouton droit et de choisir l'option d'exécution. Un double-clic aura pour effet d'ouvrir le script dans le Bloc-notes. Bien que cela constitue une mesure de sécurité pertinente, elle devient contraignante si l'on souhaite qu'un script PowerShell se lance automatiquement lorsqu'une tâche planifiée est exécutée. Heureusement, une solution simple existe : l'utilisation d'un script de commandes pour exécuter de manière automatique les scripts PowerShell.
Script Batch
Voici la structure du script batch permettant l'exécution automatique des scripts PowerShell sous Windows 10. Chaque script PowerShell nécessitera son propre script batch.
Structure :
@ECHO OFF PowerShell.exe -Command "Chemin vers le script" PAUSE
Remplacez "Chemin vers le script" par le chemin d'accès réel vers le script PowerShell que vous désirez lancer. Voici un exemple concret :
Exemple :
@ECHO OFF PowerShell.exe -Command "C:\Scripts\Rappel-Lait-Achat.ps1" PAUSE
Ouvrez le Bloc-notes et copiez-y le script. Enregistrez le fichier avec l'extension .bat.
Ce fichier de commandes a pour rôle d'ouvrir PowerShell et d'exécuter le script que vous avez spécifié. Il reste impossible d'exécuter directement un script PowerShell par double-clic sur votre bureau. L'exécution du fichier batch affichera une fenêtre d'invite de commandes et le message "Appuyez sur une touche pour continuer". Ce n'est qu'après avoir appuyé sur une touche que le script PowerShell sera lancé. Si vous préférez que le script s'exécute sans intervention manuelle, supprimez la ligne 'PAUSE' du script ci-dessus. Cela donnera le résultat suivant :
@ECHO OFF PowerShell.exe -Command "Chemin vers le script"
Planificateur de tâches et scripts PowerShell
Supposons que vous souhaitiez automatiser l'exécution d'un script PowerShell en tant qu'action dans une tâche planifiée. Pour ce faire, vous devez d'abord créer un script batch correspondant, comme expliqué précédemment, pour lancer le script PowerShell. Ensuite, lors de la création de la tâche planifiée, sélectionnez le script batch comme action à exécuter en réponse à un déclencheur. Cela aura pour effet de lancer le script PowerShell.
Nous avons utilisé le Planificateur de tâches dans cet exemple, mais le principe reste le même si vous utilisez une autre application d'automatisation : il faudra toujours faire appel au script batch. La seule exception serait si votre application d'automatisation peut directement lancer PowerShell et le diriger vers le script PowerShell à exécuter.