
Ce tutoriel explique comment lancer un script PS1 par un fichier batch.
Cette approche nécessite deux fichiers :
- le fichier Batch
- le fichier PS1
Les scripts PowerShell sont très puissants pour automatiser des tâches administratives sous Windows. Cependant, il peut être utile de transformer un script PowerShell en un fichier batch (.bat) pour simplifier son exécution, surtout pour les utilisateurs qui ne sont pas familiers avec PowerShell ou qui préfèrent les fichiers batch classiques.
Ce petit tutoriel explique comment encapsuler un script PowerShell dans un fichier batch (.bat) pour le rendre plus accessible et facile à exécuter.
Pourquoi Utiliser un Fichier Batch pour Lancer un Script PowerShell ?
- Compatibilité :
Les fichiers batch sont largement utilisés et compris dans l'écosystème Windows. Les utilisateurs peuvent être plus à l'aise avec des fichiers .bat qu'avec des scripts .ps1.
- Facilité d'exécution :
Un fichier batch peut être exécuté en double-cliquant dessus, ce qui est plus intuitif que de lancer PowerShell et d'exécuter un script.
- Encapsulation :
Encapsuler un script PowerShell dans un fichier batch permet d'ajouter des fonctionnalités supplémentaires, comme l'exécution avec des privilèges élevés ou l'ajout de paramètres en ligne de commande
Étapes pour Transformer un Script PowerShell en Fichier Batch
- Écrire et Tester le Script PowerShell
Avant de transformer un script PowerShell en fichier batch, assurez-vous que le script PowerShell fonctionne correctement. Enregistrez le script avec une extension .ps1 (par exemple, MonScript.ps1). Vous pouvez tester le script en l'exécutant directement dans PowerShell.
- Créer un Nouveau Fichier Batch (.bat)
Ouvrez le Bloc-notes ou un autre éditeur de texte et créez un nouveau fichier. Enregistrez-le avec une extension .bat (par exemple, MonScript.bat).
- Ajouter la Commande pour Exécuter le Script PowerShell
Dans le fichier batch, ajoutez la commande suivante pour exécuter le script PowerShell. Cette commande utilise powershell.exe pour lancer PowerShell en mode non interactif et exécuter le script.
Voici le contenu typique que vous devez inclure dans votre fichier batch :Code : Tout sélectionner
@echo off :: Exécuter le script PowerShell avec le contournement de la la politique d'exécution PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0MonScript.ps1'" pause
- Explication des options de la commande PowerShell :
- @echo off : Désactive l'affichage des commandes batch dans la console.
- :: : Utilisé pour les commentaires dans un fichier batch.
- PowerShell : Appelle l'exécutable PowerShell.
- -NoProfile : Lance PowerShell sans charger le profil de l'utilisateur pour une exécution plus rapide.
- -ExecutionPolicy Bypass : Permet de contourner la politique d'exécution pour le script actuel, utile si les politiques de sécurité empêchent l'exécution de scripts non signés.
- -Command "& '%~dp0MonScript.ps1'" : Exécute le script PowerShell. %~dp0 est une variable d'environnement qui fait référence au chemin du répertoire dans lequel se trouve le fichier batch. Cela permet de s'assurer que le script PowerShell est exécuté depuis le même emplacement que le fichier batch.
- pause : Ajoute une pause à la fin du script pour que l'utilisateur puisse voir le résultat avant que la fenêtre de la console ne se ferme.
- Explication des options de la commande PowerShell :
- Enregistrer et Tester le Fichier Batch
Enregistrez le fichier batch après avoir ajouté la commande ci-dessus. Double-cliquez ensuite sur le fichier batch pour l'exécuter. Il devrait exécuter le script PowerShell associé.
- Ajuster pour l'Exécution avec Privilèges Élevés (Facultatif)
Pour certaines tâches administratives, le script PowerShell peut nécessiter des privilèges élevés. Vous pouvez ajuster le fichier batch pour qu'il demande des privilèges administratifs.
Voici comment faire :Code : Tout sélectionner
@echo off :: Vérifie si le script est exécuté en tant qu'administrateur NET SESSION >nul 2>&1 if %errorLevel% == 0 ( PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0MonScript.ps1'" ) else ( :: Relance le script en mode administrateur echo Demande des privilèges d'administrateur... powershell -Command "Start-Process '%~f0' -Verb runAs" ) pause
- Explication du code :
- NET SESSION >nul 2>&1 : Vérifie si le script est exécuté en tant qu'administrateur. Si l'accès est refusé, le code d'erreur est supérieur à 0.
- if %errorLevel% == 0 : Si le script est exécuté en tant qu'administrateur, il exécute le script PowerShell.
- Start-Process '%~f0' -Verb runAs : Relance le fichier batch en tant qu'administrateur si nécessaire.
- Explication du code :
Transformer un script PowerShell en fichier batch permet de faciliter son exécution, surtout pour les utilisateurs qui ne sont pas familiers avec PowerShell.
En encapsulant les commandes PowerShell dans un fichier batch, vous pouvez également contrôler la politique d'exécution, les privilèges et d'autres aspects du processus d'exécution, rendant vos scripts plus robustes et polyvalents.
Conseil Final :
Assurez-vous de tester le fichier batch sur un environnement de test avant de le déployer en production, surtout si votre script effectue des modifications sur le système.