Windows

Transformer un script PowerShell en .exe

En ce moment j’aime faire un peu de PowerShell. En regardant quelques vidéos YouTube, je suis vite tombé sur un tuto d’un anglophone qui démontre comment transformer un script PowerShell en .exe.

Évidemment que j’ai cliqué, regarder, tester, partager sur le discord, puis retranscris le dit tuto en français ici même !

Pourquoi diable transformer un .ps1 en .exe ?

Il y a plusieurs raisons à cela, en particulier si vous utilisez des scripts dans un milieu professionnel. Le premier point est l’exécution simple d’un script powershell avec un clic droit, car oui, un .ps1 n’est pas exécutable en tant qu’administrateur !

Second point, un .exe, ce n’est pas modifiable. Cela évite par exemple à vos collègues de modifier le fonctionnement de votre script et donc de le distribuer au plus grand nombre.

Le script de démo

Pour ce tutoriel j’utilise un simple script afin de ne pas complexifier la démonstration.

Voici le script en question, il permet simplement de renommer la machine selon ce que l’utilisateur écrit dans le script.

$MACHINE_NAME = Read-Host "Set PC Name"
Rename-Computer -NewName $MACHINE_NAME

Le script est nommé « change-hostname.ps1 » cela à sa petite importance.

Transformer un script PowerShell en Éxecutable

Tout d’abord ouvrez en tant qu’administrateur l’outil intégré à Windows « IExpress »

Pour commencer, sélectionner « Create new Self Extraction Directive file », puis sélectionnez « Create new Self Extraction Detective file ». Enfin nommer le paquet comme bon vous semble, il n’y a pas grande importance.

Pour les deux prochaines options, je laisse par defaut. Ensuite ajoutez tout d’abord votre script dans les packaged files. Attention à aussi ajouter les dépenses de vos scripts s’il y en a.

Second point à faire attention dans « Install Program on Launch » insérez la commande suivante :

powershell.exe -ExecutionPolicy Bypass -File Filename.ps1

Veillez à remplacer « Filename.ps1 » par le nom du script à exécuter. Comme dit au début de l’article, le mien se nomme « change-hostname.ps1 » ce qui donne

powershell.exe -ExecutionPolicy Bypass -File change-hostname.ps1

Une fois la commande insérée, en continu à laisser les options par défaut.

Ensuite dernier point important, renseigner où sera enregistré le package en .exe et cocher les deux cases du dessous.

Une option intéressante dans le cas du script avec lequel je fais le tuto, est de pouvoir demander à l’utilisateur de redémarrer sa machine, en effet mon script étant fait pour renommer une machine, un redémarrage est nécessaire.

Sur la page « Save Self Extraction » vous pouvez sauvegarder un récapitulatif au format .SED du package.

Pour la suite vous connaissez.. suivant, suivant, suivant ……

À la fin de l’opération, vous trouverez le .exe là où vous l’avez enregistré 😉

Vous pouvez bien sur comme tout .exe, le lancer en tant qu’administrateur avec un clic droit !

Via
Source du tuto

Jérémy Taunay

🪪 Be smarter everyday | 🏮 Less is more | 🐧Tech systèmes et réseaux | 🖥️ Homelaber