Technical Anshu
Tutorials Blog
Guide PowerShell vers EXE

Convertir un script PowerShell en EXE Guide complet avec PS2EXE

Vous avez écrit un script qui résout un problème en dix secondes, mais les personnes qui en ont besoin n'ouvriront pas PowerShell, ne modifieront pas une politique d'exécution et n'exécuteront pas de fichier texte. Convertissez-le en un EXE sur lequel ils peuvent double-cliquer. Voici la conversion complète, bien faite, avec ses limites clairement indiquées.

By Technical AnshuWindows 10 / 116 minute read
Regardez la vidéo pour voir le script converti et exécuté à l'écran, étape par étape

Chaque administrateur Windows dispose d'un dossier de petits scripts brillants que personne d'autre ne peut utiliser. Le scénario est bon ; c'est l'emballage qui pose problème. Un fichier .ps1 s'ouvre dans le Bloc-notes lors d'un double-clic, déclenche des avertissements de stratégie lors de son exécution et ressemble à un virus pour un utilisateur non technique. Le convertir en EXE avec le module gratuit PS2EXE corrige l'empaquetage en une minute environ. Cette page présente tout le travail dans l'ordre : ce que fait réellement la conversion, l'installation, la commande, les options qui comptent et les tests qui vous permettent de rester honnête.

Windows PowerShell - converting a script
PS C:\Scripts> Install-Module -Name ps2exe PS C:\Scripts> Invoke-PS2EXE -inputFile ".\DiskCleanup.ps1" -outputFile ".\DiskCleanup.exe" PS C:\Scripts> .\DiskCleanup.exe
L'intégralité de la conversion en trois lignes - installez une fois le module gratuit PS2EXE, convertissez, exécutez. La sortie de commande affichée est un exemple.
1

Ce que fait réellement la conversion

Un script PowerShell est un fichier texte. Il a besoin de PowerShell pour l'ouvrir, de la bonne politique d'exécution pour l'exécuter et d'un utilisateur qui n'a pas peur d'une fenêtre bleue pleine de texte. Un EXE converti supprime les trois frictions : l'utilisateur double-clique sur un fichier, exactement comme n'importe quel autre programme.

Soyez clair sur ce que fait l’outil sous le capot. PS2EXE, le module gratuit utilisé par ce guide, enveloppe votre script dans un petit programme .NET. Le texte du script se déplace à l'intérieur de l'EXE sous forme codée et, lorsque l'EXE s'exécute, il transmet ce script au moteur PowerShell intégré à Windows. Rien n'est compilé en code machine et le script n'est pas transformé en secret - une page ultérieure de cet ensemble couvre cette limite dans son intégralité.

Ce wrapper est toujours vraiment utile. C'est la différence entre envoyer à un collègue un fichier texte contenant six instructions et lui envoyer un seul bouton qui fonctionne.

2

Étape 1 - Testez la PS1 jusqu'à ce qu'elle devienne ennuyeuse

Ne convertissez jamais un script non testé. L'EXE masque la console et le flux d'erreurs de manière à ralentir le débogage, de sorte que chaque bogue doit être trouvé pendant que le script est encore un simple .ps1.

  1. Exécutez le script en tant qu'utilisateur normal et en tant qu'administrateur
  2. Exécutez-le sur une machine qui n'est pas la vôtre, si vous le pouvez - les chemins et les lecteurs diffèrent
  3. Donnez-lui la mauvaise entrée une fois, volontairement, et observez ce qu'il fait
  4. Seulement quand il se comporte de la même manière à chaque fois, convertissez-le
3

Étape 2 - Installez le module PS2EXE une fois

PS2EXE est publié sur PowerShell Gallery par son auteur, Markus Scholtes, et il est gratuit. Vous l'installez une fois sur votre propre PC ; les personnes qui reçoivent l'EXE n'installent rien.

  1. Ouvrez PowerShell et exécutez Install-Module -Name ps2exe
  2. La première fois, PowerShell peut vous demander de faire confiance au référentiel PSGallery - répondez Oui si vous avez démarré l'installation vous-même
  3. Si les installations de modules sont bloquées, autorisez-les pour votre propre session avec Set-ExecutionPolicy -Scope CurrentUser RemoteSigned et comprenez que vous modifiez un paramètre de sécurité sur votre propre compte uniquement.

Il existe également une interface graphique, Win-PS2EXE, qui affiche chaque option sous forme de cases à cocher et de champs. Il produit exactement le même EXE que la ligne de commande – utilisez celui que vous trouvez le plus clair.

4

Étape 3 - Exécutez la conversion

La commande de base nomme un script d'entrée et un fichier de sortie :

  1. Invoke-PS2EXE -inputFile ".\DiskCleanup.ps1" -outputFile ".\DiskCleanup.exe"
  2. L'alias plus court ps2exe accepte les mêmes paramètres
  3. Ajoutez -noConsole si le script affiche une fenêtre ou un formulaire et que vous ne voulez pas de fenêtre de console noire derrière.
  4. Ajoutez -requireAdmin si le script modifie les paramètres système, afin que Windows demande une élévation au lancement au lieu que le script échoue à mi-chemin
  5. Ajoutez -iconFile ".\tool.ico" plus -title, -product, -company et -version si le fichier sera partagé - ceux-ci remplissent l'onglet Détails des propriétés du fichier.

La vidéo liée sur cette page présente la conversion à l'écran ; les options ci-dessus sont les mêmes que celles qu'il utilise, et le reste de ce guide explique chacune d'elles en profondeur.

5

Étape 4 - Testez l'EXE comme un étranger

Un EXE converti est un nouveau programme en ce qui concerne Windows. Testez-le tel que son utilisateur réel le rencontrera :

  1. Copiez-le dans un autre dossier et exécutez-le en double-cliquant, pas depuis votre fenêtre PowerShell
  2. Exécutez-le d'abord sans droits d'administrateur, même si vous l'avez construit pour des tâches d'administration, pour voir honnêtement l'échec
  3. Surveillez les réactions de l'antivirus et de SmartScreen et corrigez-les correctement - il y a une page complète à ce sujet dans cet ensemble
  4. Conservez la source .ps1. L'EXE n'est qu'une sortie de build ; chaque modification future commence à partir du script
Les deux limites honnêtes de tout outil de script vers EXE : la source à l'intérieur de l'EXE peut être relue par toute personne suffisamment déterminée, donc ne cachez jamais un mot de passe dans un script converti ; et un nouveau EXE non signé inquiète souvent les logiciels antivirus jusqu'à ce qu'il gagne en réputation ou soit signé. Les deux sujets ont leurs propres guides complets dans cet ensemble.

Regardez le processus complet dans la vidéo

Regardez la conversion complète dans la vidéo - installation du module, l'interface graphique et les routes de commande, ainsi que l'exécution de l'EXE terminé.

Watch Full Video
Foire aux questions

Le PC cible a-t-il besoin d'installer PowerShell pour exécuter l'EXE converti ?

Il a besoin du moteur PowerShell fourni dans Windows lui-même, que Windows 10 et 11 intègrent par défaut. L'utilisateur n'installe rien et n'ouvre jamais PowerShell - l'EXE démarre le moteur en arrière-plan et lui remet votre script.

L’EXE converti est-il un véritable programme compilé ?

Pas au sens C ou C pointu. PS2EXE encapsule le texte de votre script, codé, dans un petit programme hôte .NET. Lorsque l'EXE s'exécute, l'hôte transmet votre script au moteur Windows PowerShell. Le comportement est identique à l'exécution du .ps1 - c'est l'emballage qui change.

Puis-je convertir un script gratuitement ou PS2EXE est-il payant ?

PS2EXE est gratuit. Il s'agit d'un module communautaire publié sur la PowerShell Gallery par Markus Scholtes, installé avec Install-Module -Name ps2exe. Des packageurs commerciaux existent, mais pour le travail de conversion standard, le module gratuit est l'outil utilisé dans la vidéo et dans ce guide.

Ce guide est basé sur la vidéo Anshu technique PowerShell vers EXE - Vous êtes bloqué à une étape ? Demandez dans les commentaires vidéo et vous obtiendrez une réponse là-bas.