Compiler le PowerShell avec PS2EXE

Compiler le PowerShellDire « Compiler le PowerShell » est évidemment un abus de langage. Il s’agit plutôt de le traduire en bytecode pour qu’ensuite, il soit compilé à la volée dans l’environnement d’exécution – le CLR Common Language Runtime – du Framework .Net.

PS2EXE, un script PowerShell

Il existe un  script PowerShell au nom de PS2EXE sous licence MS-PL qui permet de compiler vos scripts PowerShell afin de les transformer en fichiers exécutables. L’éditeur fournit un fichier ZIP à décompresser dans lequel vous trouverez le fichier callPS2EXE.bat qui s’utilise de la manière suivante, en mode ligne de commandes :

callPS2EXE.bat monscript.ps1 monexe.exe -runtime50 -x64

Vous pouvez aussi exécuter le script PowerShell dans l’environnement d’édition du Windows PowerShell ISE ou à partir de l’interpréteur PowerShell :

./ps2exe.ps1 -inputFile kill.ps1 -outputFile kill.exe -icon kill.ico

Pour compiler un script PowerShell affichant une interface graphique, vous devez modifier la dernière du fichier callPS2EXE comme suit :

powershell.exe -command "&'.\ps2exe.ps1' -sta -noconsole %cmd%"

Tous les commutateurs de la commande ps2exe.ps1 sont accessibles en tapant à partir de la ligne de commandes :

powershell.exe -command "&'.\ps2exe.ps1'

Utilisation et paramètres de la commande ps2exe.ps1

Vous pouvez notamment préciser le mode 64 bits, la version du runtime .Net. J’ai découvert le paramètre -icon dans les exemples d’utilisation fournis dans le code du fichier createDemo.bat !

    powershell.exe -command "&'.\ps2exe.ps1' [-inputFile] ''
                   [-outputFile] ''
                   [-verbose] [-debug] [-runtime20] [-runtime30]"

       inputFile = PowerShell script that you want to convert to EXE
      outputFile = destination EXE file name
         verbose = Output verbose informations - if any
           debug = generate debug informations for output file
           debug = generate debug informations for output file
       runtime20 = this switch forces PS2EXE to create a config file for
                   the generated EXE that contains the "supported .NET
                   Framework versions" setting for .NET Framework 2.0
                   for PowerShell 2.0
       runtime30 = this switch forces PS2EXE to create a config file for
                   the generated EXE that contains the "supported .NET
                   Framework versions" setting for .NET Framework 4.0
                   for PowerShell 3.0
       runtime40 = this switch forces PS2EXE to create a config file for
                   the generated EXE that contains the "supported .NET
                   Framework versions" setting for .NET Framework 4.0
                   for PowerShell 4.0
       runtime50 = this switch forces PS2EXE to create a config file for
                   the generated EXE that contains the "supported .NET
                   Framework versions" setting for .NET Framework 4.0
                   for PowerShell 5.0
            lcid = Location ID for the compiled EXE. Current user
                   culture if not specified.
             x86 = Compile for 32-bit runtime only
             x64 = Compile for 64-bit runtime only
             sta = Single Thread Apartment Mode
             mta = Multi Thread Apartment Mode
       noConsole = The resulting EXE file starts without a console window just like a Windows Forms app.

Scripting  / Formateur Powershell Formation PowerShell PowerShell PS2EXE 

Commentaires

Bonjour,

Je vous remercie pour votre article. dans mon script PowerShell que je souhaite le transformer en .exe j’affiche un FileDialog, en lançant votre commande ça crée bien un exe mais le FileDialog ne se lançe pas. Merci pour votre aide

Laisser un commentaire

(requis)

(requis)