Exécuter le fichier BAT à partir du script Powershell
- Créer et exécuter un script PowerShell
- Exécuter un fichier batch à partir d’un script PowerShell
- Exécuter un fichier batch à partir d’un script PowerShell avec des arguments
- Exécuter des commandes par lots à partir de PowerShell
- Conclusion
Un fichier Batch consiste en une série de commandes qui s’exécutent ligne par ligne de manière séquentielle. Ces fichiers batch sont exécutés dans cmd.exe, un interpréteur de ligne de commande initialement publié pour la famille Windows NT.
De même, un fichier PowerShell est un fichier texte composé d’une liste de commandes exécutées par l’interface de ligne de commande PowerShell ; il est enregistré avec l’extension .ps1
. Il s’agit du dernier shell et outil de script pour Windows et d’une version cmd plus avancée.
Pour exécuter un fichier .bat
à partir d’un script PowerShell, vous pouvez l’exécuter manuellement à partir du PowerShell. Mais, l’ajout d’un fichier .bat
à un script PowerShell pour l’exécuter automatiquement sans aucune intervention de l’utilisateur peut parfois ne pas fonctionner en raison de quelques erreurs mineures qui doivent être corrigées.
Cet article illustrera différentes manières d’exécuter un fichier Batch à partir d’un script PowerShell.
Créer et exécuter un script PowerShell
Pour créer un script PowerShell, ouvrez le Bloc-notes et ajoutez les commandes à exécuter. Enregistrez le fichier avec l’extension .ps1
pour l’enregistrer en tant que fichier PowerShell.
Vous pouvez utiliser n’importe quel éditeur de texte pour créer un fichier.
Pour exécuter un script PowerShell, faites un clic droit sur le fichier PowerShell et cliquez sur Exécuter avec PowerShell
. Vous pouvez également modifier le fichier dans PowerShell ISE.
Exécuter un fichier batch à partir d’un script PowerShell
Pour exécuter un fichier .bat
à partir du script PowerShell, ajoutez la ligne suivante au script PowerShell :
& .\testfile1.bat
Mais cela ne fonctionne que lorsque testfolder
est le chemin relatif ou lors de l’utilisation de la lettre de lecteur dans le chemin. Une approche plus stable peut être faite.
Par exemple, nous avons un fichier .bat
nommé testfile.bat
, qui se compose de commandes qui envoient la sortie à un fichier texte nommé opt.txt
. Ajoutez le fichier Batch à un script PowerShell pour qu’il s’exécute automatiquement lors de l’exécution du script PowerShell.
Ajoutez la ligne suivante au script PowerShell pour exécuter le fichier Batch :
cmd.exe /c 'testfile1.bat'
Production:
Une autre façon d’exécuter un fichier Batch à partir du script PowerShell consiste à utiliser l’applet de commande Start-Process
. Pour exécuter le fichier Batch, ajoutez la ligne de code suivante au script PowerShell :
Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -NoNewWindow
Où:
-Filepath
spécifie le chemin du fichier Batch.-NoNewWindow
lance le traitement dans la fenêtre en cours.
Pour exécuter le fichier Batch en tant qu’administrateur, ajoutez -verb runas
dans le code ci-dessus :
Start-Process -FilePath 'C:\Users\Aastha Gas Harda\Desktop\testfile1.bat' -Verbose Runas -NoNewWindow
Cette commande est utile lorsque votre fichier .bat
contient des commandes qui nécessitent des privilèges d’administrateur pour s’exécuter à l’exécution.
Exécuter un fichier batch à partir d’un script PowerShell avec des arguments
Pour exécuter un fichier Batch à partir du script PowerShell qui contient des arguments, vous pouvez le faire en utilisant le paramètre -ArgumentList
et en spécifiant chaque argument dans un tableau de chaînes. En prenant l’exemple ci-dessus, ajoutez la ligne de code suivante dans le script PowerShell :
Start-Process -FilePath "cmd.exe" -ArgumentList @("/B", "/C", "`"", "^`"testfile1.bat^`"", "^`"$inputFilePath^`"", "`"") -NoNewWindow;
Exécuter des commandes par lots à partir de PowerShell
Plutôt que le fichier Batch, vous pouvez également exécuter des commandes Batch directement à partir du script PowerShell. Ajoutez la ligne de code suivante pour exécuter la commande echo
afin d’imprimer la sortie sous la forme hello world
.
Start-Process "cmd.exe" '/c echo helloworld' -NoNewWindow
Conclusion
Nous avons donc expliqué comment exécuter un fichier Batch à partir du script PowerShell de la manière la plus sûre possible. Nous avons également expliqué comment exécuter des commandes Batch directement à partir de PowerShell au lieu d’un script PowerShell sans intervention de l’utilisateur.