J’utilise au quotidien le langage PowerShell pour gérer des serveurs Windows. Ce langage est à la fois souple et efficace dans cet environnement.
Une des raisons principales que je puisse voir à la transformation d’un script interprété écrit en POWERSHELL en un fichier exécutable, c’est d’en éviter la modification par un utilisateur « inexpérimenté » ou malveillant.
En fait, il n’existe pas de « compilateur » pour PowerShell ni même de convertisseur vers des langages qui soient ensuite convertibles en binaires.
Toutefois, sur http://ps2exe.codeplex.com/, j’ai trouvé un petit script qui encapsule un petit client PowerShell écrit en C# et le script à exécuter. Le résultat est un petit EXE qui décrypte le code en mémoire avant d’en lancer l’exécution.
Bien évidemment, l’interpréteur PowerShell et le .NET framework v2.0 doivent être installés sur l’hôte d’exécution.
Le contenu du script n’apparait pas en clair dans l’exécutable.
Le code PS2EXEC contient même un petit BAT de démo : createdemo.bat
call “callPS2EXE.bat” “test.ps1” “test.exe”
pause
Createdemo.bat va transformer le script « test.ps1 » en test.exe.
Voici le résultat de l’exécution de ce script (dans http://powergui.org).
Voici le résultat de la séquence de compilation de ce script.
Voici le résultat de l’exécution de test.exe
Après avoir utilisé PS2EXE, je préfère très largement Ps1 To Exe.