[Tutoriel] Comment intégrer directement un script powershell dans un fichier batch

Nos tutoriels complets pour vous aider
Verrouillé
Avatar du membre
pboulanger
Administrateur du site
Administrateur du site
Messages : 1132
Enregistré le : mar. 17 mars 2020 11:49
A remercié : 107 fois
A été remercié : 111 fois
    Windows 10 Firefox

[Tutoriel] Comment intégrer directement un script powershell dans un fichier batch

Message par pboulanger »

:hi:

Ce tutoriel explique comment intégrer directement un script PowerShell dans un fichier batch afin de n'avoir qu'un seul fichier à publier.

Pour exécuter un script PowerShell (.ps1) à partir d'un fichier batch (.bat), vous pouvez intégrer directement le contenu du script PowerShell dans le fichier batch. Cela permet de simplifier la distribution de votre script en ayant tout dans un seul fichier.

Voici comment vous pouvez créer un fichier .bat qui lance un script PowerShell intégré :
  • Étape 1 : Créer un fichier batch
    Créez un nouveau fichier avec l'extension .bat, par exemple MonScript.bat.
     
  • Étape 2 : Intégrer le contenu du script PowerShell
    Utilisez la commande powershell -Command dans le fichier batch pour exécuter du code PowerShell intégré.

    Voici un exemple de base :

    Code : Tout sélectionner

    @echo off
    REM Lancer le script PowerShell intégré
    
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
        "$ErrorActionPreference = 'Stop';" ^
        "Write-Host 'Bonjour depuis PowerShell';" ^
        "Start-Sleep -Seconds 2;" ^
        "Write-Host 'Script PowerShell terminé.'"
    
    REM Fin du fichier batch
    pause
    
    • Explication des options de la commande :
      • -NoProfile :
        Empêche PowerShell de charger le profil de l'utilisateur, ce qui peut améliorer les performances et éviter les interférences.
         
      • -ExecutionPolicy Bypass :
        Permet de contourner la stratégie d'exécution, assurant que le script s'exécute même si les politiques de sécurité de l'utilisateur sont restrictives.
         
      • -Command :
        Spécifie le code PowerShell à exécuter. Ce code est écrit entre guillemets.
  • Étape 3 : Ajouter le contenu du script PowerShell
    Remplacez le contenu PowerShell par le vôtre en continuant chaque ligne avec un ^ à la fin pour indiquer que la commande continue sur la ligne suivante.
     
    Voici un exemple où le contenu est un peu plus complexe :

    Code : Tout sélectionner

    @echo off
    REM Lancer le script PowerShell intégré
    
    powershell -NoProfile -ExecutionPolicy Bypass -Command ^
        "$ErrorActionPreference = 'Stop';" ^
        "param([string]$nom = 'Utilisateur');" ^
        "Write-Host ('Bonjour, ' + $nom);" ^
        "Start-Sleep -Seconds 2;" ^
        "Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 | Format-Table -AutoSize;"
    
    REM Fin du fichier batch
    pause
    
  • Étape 4 : Enregistrer et exécuter
    1. Enregistrez votre fichier avec l'extension .bat (par exemple, MonScript.bat).
    2. Double-cliquez sur le fichier .bat pour l'exécuter. Cela exécutera le code PowerShell intégré.
Remarques supplémentaires

Assurez-vous d'avoir les droits d'exécution pour PowerShell et que l'exécution de scripts n'est pas bloquée par la politique de sécurité du système.
 ! Message de : pboulanger
Utiliser -ExecutionPolicy Bypass peut présenter un risque de sécurité. Assurez-vous de ne l'utiliser que lorsque vous faites confiance au script.
Avec cette méthode, vous pouvez exécuter n'importe quel code PowerShell depuis un fichier batch sans avoir besoin d'un fichier .ps1 séparé.
Amicalement,

Pierre
Verrouillé