Le guide de facto pour la conversion d’un fichier PS1 en EXE (7 façons)

Vous pouvez invoquer des scripts PowerShell de différentes manières, mais ils ont tous un inconvénient : vous ne pouvez pas simplement les exécuter comme un programme Windows standard (EXE). Peut-être souhaitez-vous empêcher la modification du code dans un script ou rendre plus facile l’exécution des scripts pour vos utilisateurs. Il est temps d’apprendre comment convertir un fichier PS1 en EXE.

Dans ce tutoriel, vous apprendrez à utiliser des générateurs PS1 vers EXE, et vous pourrez également les comparer pour choisir celui qui correspond le mieux à vos préférences.

Exigences

Différents outils sont démontrés tout au long de ce tutoriel avec des instructions étape par étape sur la façon de convertir PS1 en EXE. Assurez-vous d’avoir toutes les exigences ci-dessous pour suivre le tutoriel.

  • A Windows computer with an administrator privileges
  • À partir de Windows 7, 8.1 et 10, PowerShell est déjà inclus lors de l’installation du système d’exploitation. Bien que certains scripts puissent être exécutés avec PowerShell 3.0, il est préférable d’obtenir PowerShell 5.1 ou PowerShell 7
  • Votre politique d’exécution PowerShell doit être configurée pour autoriser l’exécution des scripts

PS2EXE

L’utilitaire PS2EXE est le premier outil de notre liste. PS2EXE est un module PowerShell gratuit et open source qui, selon l’auteur Ingo Karstein, « ne convertit pas le script PowerShell dans une autre langue. Il encapsule le script avec un hôte PowerShell léger écrit en C# et compile le code source C# généré dynamiquement en mémoire vers un fichier EXE. »

Visitez le blog d’Ingo Karstein pour en savoir plus sur les débuts de PS2EXE. Le développement du module s’est arrêté vers 2017, mais Markus Scholtes a repris l’évolution de PS2EXE en créant une version GUI également.

Installation du module PS2EXE

PS2EXE a commencé comme un script PowerShell, et lorsque Markus Scholtes a repris le développement, un module a été rendu disponible. Comme PS2EXE utilise le module pour convertir votre script en un exécutable, vous devrez l’installer depuis la galerie PowerShell.

Suivez les instructions ci-dessous pour installer le module PS2EXE.

  1. Ouvrez une console PowerShell en tant qu’administrateur.

2. Exécutez la commande Install-Module pour télécharger et installer le module depuis la galerie PowerShell.

Install-Module ps2exe

3. Tapez Y et appuyez sur Entrée lorsque vous voyez la demande concernant un dépôt non approuvé. Ne vous inquiétez pas. Ce message est inoffensif.

Untrusted repository
 You are installing the modules from an untrusted repository. If you trust this repository, change
 its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to
 install the modules from 'PSGallery'?
 [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

Conversion de PS1 en EXE via la ligne de commande

PS2EXE offre deux façons de convertir les scripts PowerShell en EXE ; en ligne de commande et en GUI. Couvrons d’abord l’utilisation de la ligne de commande.

Pour convertir un seul script PowerShell en EXE via la ligne de commande, il suffit d’une seule ligne fournissant la commande principale PS2EXE (Invoke-PS2EXE) suivie du chemin du script à convertir et du chemin de l’EXE que vous souhaitez créer.

## Utiliser le nom complet de la commande
Invoke-ps2exe .\source.ps1 .\target.exe

## Utiliser l'alias
ps2exe .\source.ps1 .\target.exe

Vous pouvez maintenant exécuter target.exe, et il invoquera le code défini dans le script source.ps1. Si vous n’avez pas utilisé le paramètre NoConsole lors de la conversion de votre script, une console PowerShell apparaîtrait lors de l’exécution du fichier target.exe.

Masquer la console

Dans l’exemple précédent, lors de l’exécution de target.exe, une console PowerShell typique apparaîtra. La plupart du temps, vous ne voulez pas voir cela. Pour éviter cela, vous pouvez utiliser le paramètre NoConsole lors de la création de l’EXE, comme indiqué ci-dessous.

Invoke-ps2exe "D:\Test\Get-LatestAppLog.ps1" "D:\Test\Get-LatestAppLog.exe" -noConsole
Converting PS1 to EXE with PS2EXE Command-Line

Vous pouvez également choisir de compiler l’EXE pour l’exécution x86 ou x64 seulement et d’autres. Vous pouvez trouver une liste des paramètres disponibles sur la page de publication GitHub.

Conversion de PS1 en EXE via l’outil PS2EXE-GUI

Si vous n’aimez pas la ligne de commande, vous pouvez également utiliser une interface graphique avec le module PS2EXE. Créée un peu plus tard, la version GUI offre presque toutes les mêmes fonctionnalités que la version en ligne de commande.

Il vous suffit de quelques clics pour convertir un fichier PS1 en EXE avec la version GUI de PS2EXE. Et contrairement à la ligne de commande, vous pouvez parcourir et sélectionner le fichier source (PS1) à partir d’une boîte de dialogue de navigation dans un joli explorateur de fichiers.

Pour exécuter la version GUI, vous devez avoir .NET 4.x sur votre ordinateur. Si vous n’avez que .NET 3.5x, vous pouvez télécharger la version PS2EXE-GUI pour .NET 3.5x séparément.

En supposant que vous ayez déjà installé le module PowerShell PS2EXE ci-dessus, ouvrez l’explorateur de fichiers et accédez à l’un des dossiers de module PS2EXE ci-dessous, puis ouvrez le dossier représentant la version du module.

Windows 32 bits : C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<version>

Windows 64 bits : C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>

À l’intérieur de ces dossiers, vous trouverez un fichier appelé Win-PS2EXE.exe.

  1. Ouvrez l’utilitaire C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>\Win-PS2EXE.exe.

2. Cliquez sur les points de suspension juste à droite de la zone Fichier source pour localiser le script PS1 que vous souhaitez convertir.

3. Définissez la valeur pour le Fichier cible et assurez-vous d’inclure l’extension de fichier .exe.

4. Choisissez toutes les personnalisations de conversion que vous souhaitez ci-dessous. Il s’agit simplement d’une représentation graphique des paramètres que vous pouvez utiliser pour votre script, tout comme la version en ligne de commande.

5. Cliquez sur Compiler pour démarrer le processus de conversion.

Converting PS1 to EXE with PS2EXE GUI

6. Lorsque vous cliquez sur le bouton Compiler, PS2EXE ouvrira une session PowerShell et effectuera la conversion. Une fois terminé, appuyez sur Entrée ou fermez la fenêtre de la console.

Successfully Converted PS1 to EXE

À noter : Certains fichiers exécutables compilés avec PS2EXE peuvent être détectés comme des virus par votre logiciel antivirus. Si cela se produit, assurez-vous de signaler ces faux positifs à votre fournisseur antivirus.

PS1 to EXE

PS1 to EXE est une autre application de bureau gratuite développée par F2KO Software qui vous permet de convertir un fichier PS1 en un fichier EXE. Contrairement à PS2EXE, Ps1 to Exe est un outil GUI complet avec un éditeur de script simple.

Tout comme PS2EXE, Ps1 to Exe a également une version GUI et en ligne de commande. Cependant, au lieu de la console PowerShell, Ps1 to Exe vous demande d’exécuter les commandes à l’intérieur de l’invite de commande.

Malheureusement, bien que le site web de F2KO soit toujours actif, il semble qu’il n’y ait pas moyen de télécharger PS1 to EXE à partir de là. Heureusement, un installateur téléchargeable de cet outil circule sur Internet.

Passons en revue comment exécuter et utiliser PS1 to EXE pour créer un EXE à partir d’un script PowerShell.

Conversion de PS1 en EXE en utilisant l’interface graphique

Après avoir installé et lancé Ps1 to Exe, vous remarquerez que PS1 to EXE dispose d’un éditeur de script simple. À l’intérieur de cet éditeur de script, vous pouvez créer et enregistrer des scripts, puis cliquer sur un bouton pour les convertir.

Ps1 to Exe prend en charge le dot-sourcing ; remarquez comment un autre fichier PS1 a été appelé avec la ligne de commande ci-dessous.

## Appeler AppLogsComplete.ps1
try { .\AppLogsComplete.ps1 } catch { exit }

Pour convertir un script en un fichier EXE avec PS1 to EXE :

  1. Ouvrez l’outil PS1 to EXE à partir de votre bureau.

2. Cliquez sur Fichier —> Ouvrir, recherchez le script que vous souhaitez convertir et ouvrez-le.

Une fois le script ouvert, configurez la façon dont vous souhaitez que l’EXE compilé s’exécute. Sur le côté droit de l’écran, vous verrez un panneau avec trois onglets à explorer. Chacun de ces onglets offre une option de configuration différente que vous pouvez choisir.

Configuring The EXE Output Settings

3. Pour ajouter des scripts dépendants, cliquez sur l’onglet Intégrer, puis cliquez sur Ajouter.

4. Lorsque vous êtes satisfait des options de conversion, cliquez sur le bouton Convertir dans la barre d’outils supérieure pour convertir le script en un fichier EXE.

Adding Dependent Scripts And Converting Script to EXE

Conversion de PS1 en EXE en utilisant la ligne de commande

Si vous préférez utiliser la ligne de commande, PS1 to EXE CLI est appelé ps1_to_exe.exe, mais son utilisation est un peu délicate.

Avec PS1 to EXE ouvert :

  1. Ouvrez une Invite de commandes en tant qu’administrateur

2. Modifiez le répertoire de travail pour qu’il corresponde au dossier d’installation de PS1 to EXE.

x86
 cd 'C:\Program Files (x86)\Ps1 to Exe'
 x64
 cd 'C:\Program Files\Ps1 to Exe'

3. Exécutez maintenant ps1_to_exe pour convertir le script en un exécutable.

La commande ci-dessous inclut également un script dépendant dans le fichier EXE compilé et définit la plate-forme cible des fichiers exécutables sur un système d’exploitation Windows 64 bits.

ps1_to_exe /ps1 "D:\Test\Get-LatestAppLog4.ps1" /exe "D:\Test\Get-LatestAppLogs.exe" /include "D:\Test\AppLogsComplete.ps1" /invisible /x64

Voici une démonstration du processus de conversion réel et des détails de sortie.

Converting Script to Executable Using Ps1 to Exe Command-Line Version

IExpress 2.0

Si vous préférez ne pas télécharger encore un autre outil, vous avez de la chance car vous disposez de l’utilitaire IExpress à l’ancienne. IExpress est une application Windows intégrée généralement utilisée pour empaqueter des fichiers ou créer des installateurs de logiciels.

Il se trouve simplement qu’IExpress peut également convertir des fichiers PS1 en EXE tout en compilant des fichiers de dépendance tous ensemble dans un seul fichier exécutable !

Pour convertir un simple script PowerShell en EXE :

  1. Vous devez ouvrir IExpress en tant qu’administrateur. Appuyez sur les touches Windows*+R* pour ouvrir la boîte de dialogue Exécuter, tapez iexpress puis appuyez sur la touche Ctrl+Shift+Entrée.
Running IExpress As Administrator

2. Sur la page d’accueil d’IExpress, sélectionnez Créer un nouveau fichier de directive d’auto-extraction et cliquez sur Suivant pour configurer votre package. Le fichier de directive d’auto-extraction (SED) contrôle les options utilisées lors de la création d’un package d’installation ; pensez-y comme un fichier de configuration.

Create New Self Extraction Directive File

3. Sélectionnez l’option Extraire les fichiers et exécuter une commande d’installation et cliquez sur Suivant. Si vous créez un programme d’installation de logiciel, cette option extrait les fichiers que vous inclurez dans le package. Cette option vous permet également d’écrire une commande personnalisée pour exécuter le script lorsque vous exécutez le fichier exécutable.

Selecting An Action To Take When Running The EXE

4. Fournissez maintenant un Titre du package et cliquez sur Suivant. Le titre du package apparaîtra sur toutes les invites que l’utilisateur verra lors de l’installation.

Le titre du package s’applique uniquement si vous créez un programme d’installation de logiciel. Dans ce cas, le titre n’a pas d’importance.

Setting A Title For The Package

6. Ensuite, choisissez Aucune invite. Choisir Aucune invite n’affiche pas de boîte de dialogue inutile à l’utilisateur lorsqu’il exécute le fichier EXE.

No Prompt

6. Si vous créez le package pour un projet nécessitant un Contrat de Licence Utilisateur Final (CLUF), vous pouvez choisir d’ajouter une licence à afficher lors de l’exécution de l’EXE. Pour cette démonstration, cependant, choisissez l’option Ne pas afficher la licence et cliquez sur Suivant.

Adding an End User License Agreement

7. Cliquez maintenant sur Ajouter et recherchez tous les scripts que vous souhaitez inclure dans cet EXE. Assurez-vous d’inclure le script principal que vous avez l’intention d’appeler ainsi que tous les scripts dépendants et autres fichiers auxquels les scripts font référence.

Selecting Files To Include In The Package

8. Dans la fenêtre Programme d’installation à lancer, indiquez le chemin vers le moteur powershell.exe en utilisant le paramètre Fichier. Assurez-vous également de définir le paramètre ExecutionPolicy sur Bypass pour garantir que les stratégies d’exécution préconfigurées ne bloquent pas l’exécution du script.

powershell.exe -ExecutionPolicy Bypass -File Get-LatestAppLog.ps1
Writing Custom Command

9. Ensuite, vous pouvez définir comment vous voulez que les fenêtres EXE se comportent lors de l’exécution. Si l’EXE est censé s’exécuter en arrière-plan, choisissez Caché et cliquez sur Suivant. Caché est le comportement de fenêtre le plus courant.

Selecting EXE’s Window Behavior On Execution

10. Puisque vous exécutez simplement un EXE en arrière-plan, il n’est pas nécessaire d’inclure un Message de fini. Sélectionnez Aucun message et Suivant.

Setting Up Post Installation Message

11. Maintenant, sélectionnez le chemin vers l’EXE que vous souhaitez créer. Vous pouvez également activer quelques options différentes ici. Une fois terminé, cliquez sur Suivant.

  • Masquer l’animation de progression de l’extraction de fichier à l’utilisateur – Si votre EXE s’exécute en arrière-plan, gardez cette option désactivée.
  • Stocker les fichiers en utilisant un nom de fichier long à l’intérieur du package – Pour prendre en charge les noms de fichiers longs lors du processus d’extraction lors de l’exécution de l’EXE. L’option doit être laissée désactivée si vous exécutez le package sur Win 95 et que vous utiliserez un fichier INF lors de l’installation.
Setting Up Target Path And File Name

12. Si vous souhaitez que l’EXE invoque un redémarrage après l’exécution du script, vous pouvez sélectionner Toujours redémarrer ici. Après avoir sélectionné une option, cliquez sur Suivant.

Choosing Whether To Require A Restart Or Not

13. Maintenant, sélectionnez Enregistrer le fichier de directive d’auto-extraction (SED) et cliquez sur Suivant. Enregistrer un fichier SED vous permet de modifier toutes les options que vous avez fournies tout au long de cet assistant ultérieurement. Le fichier SED contient les réponses à toutes les valeurs fournies jusqu’à présent.

Saving Information About The Package Configuration

14. Maintenant, tout ce qu’il reste à faire est de compiler le package. Cliquez sur Suivant, et vous verrez un journal des processus. Pour terminer la création du package, cliquez sur Terminer, et vous êtes prêt.

Exiger des privilèges d’administrateur

Si vous avez un script qui nécessite d’être exécuté en tant qu’administrateur, IExpress ne vous donne pas cette option, mais c’est toujours possible.

Avant d’exécuter IExpress, copiez le code ci-dessous et collez-le en haut de votre script. Cet extrait de code vérifie si le script est exécuté en tant qu’administrateur. Sinon, il se fermera et relancera automatiquement le script avec les privilèges d’administrateur.

N’oubliez pas que vous devez modifier le paramètre WindowStyle sur l’écran Afficher la fenêtre en fonction de la façon dont vous voulez afficher ou masquer la fenêtre de l’EXE lorsque vous l’exécutez.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## Testez si le script est exécuté en tant qu'administrateur, sinon, exécutez-le à nouveau en tant qu'administrateur
if ((Test-Admin) -eq $false){ 
    if ($elevated) {
    } else {
        try{
            Start-Process powershell.exe -WindowStyle Hidden -Verb RunAs -ArgumentList ('-noprofile -file "{0}" -elevated' -f ($MyInvocation.MyCommand.Definition))
            ## Styles de fenêtre : Normal, Réduit, Maximisé et Masqué

						## ------> LE RESTE DE VOTRE SCRIPT VA ICI <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

Si vous aimez écrire des scripts dans l’éditeur PowerShell ISE, cet outil convient à votre style. ISE Steroids est une extension de l’éditeur PowerShell ISE emballée sous forme de module PowerShell qui ajoute de nombreuses fonctionnalités à l’ISE.

ISE Steroids possède de nombreuses fonctionnalités, mais celle qui vous intéresse ici est sa capacité à convertir un script en un fichier EXE, alors creusons un peu plus.

  1. En supposant que vous avez déjà installé ISE Steroids, ouvrez PowerShell ISE.

2. Dans la console intégrée, exécutez Start-Steroids pour lancer l’extension et charger Steroids.

3. Ouvrez ou écrivez un nouveau script dans la fenêtre de l’éditeur. Ce tutoriel utilisera ces fichiers.

4. Cliquez sur l’option Outils —> Transformer le code en EXE comme indiqué dans la capture d’écran ci-dessous.

Compiling PS1 to EXE

5. Définissez maintenant toutes les options que vous souhaitez appliquer au fichier EXE résultant dans la petite fenêtre, comme celle ci-dessous. Ces options sont des paramètres, identiques à ceux de PS2EXE, pour configurer les propriétés et le comportement de votre fichier EXE.

Configuration For The Executable File

6. Une fois que vous avez défini toutes les options, cliquez sur le bouton Créer une application. ISE Steroids vous demandera alors de sélectionner un chemin de destination. Après cela, vous avez terminé de convertir votre PS1 en EXE.

Visual Studio Code et PowerShell Pro Tools

Pour notre prochain éditeur, nous vous présentons Visual Studio Code (VS Code). VS Code est la solution recommandée par Microsoft pour remplacer PowerShell ISE et est très apprécié par de nombreux développeurs PowerShell.

Bien que VS Code n’ait pas de moyen natif de convertir les scripts PowerShell en EXE, vous pouvez toujours le faire avec l’extension PowerShell Pro Tools. En plus de convertir les scripts en EXE, l’extension PowerShell Pro Tools vous aide à empaqueter les scripts, inclut un concepteur GUI, et plus encore.

PowerShell Pro Tools nécessite à la fois le Pack de développement .NET 4.6.2 (ou ultérieur) et le .NET Core 1.0 ou ultérieur pour empaqueter les scripts.

Vous utilisez les scripts Get-LatestAppLog3.ps1 et AppLogsComplete.ps1 pour cette démonstration.

En supposant que vous avez VS Code et l’extension PowerShell Pro Tools installés :

  1. Ouvrez VS Code et un script PowerShell à convertir en EXE.

2. Dans le coin supérieur droit de VS Code, cliquez sur le bouton Emballer le script en tant qu’Exe comme indiqué ci-dessous.

Compiling PowerShell Script To An EXE

3. Lorsque vous créez un EXE à partir d’un script pour la première fois, PowerShell Pro Tools créera un fichier package.psd1 dans la racine de l’espace de travail actuel.

Showing Workspace Root and PowerShell Data File (PSD1)

4. À l’intérieur du fichier package.psd1, le chemin exact du script à convertir est automatiquement renseigné pour la clé Root. Définissez la clé Chemin de sortie pour spécifier le chemin où enregistrer l’EXE, comme indiqué ci-dessous.

Setting up Root and Output Path

5. Lorsque vous créez un EXE à partir d’un script, vous remarquerez divers messages journaux dans le volet de Sortie en bas de l’écran. Si des erreurs surviennent lors de la compilation du script, elles seront affichées ici.

Logs Shown In The Output Pane

Compilation d’autres scripts dans le même EXE

Si vous avez des scripts dépendants appelés dans votre script principal, l’extension PowerShell Pro Tools peut également s’occuper de ceux-ci. Pour ce faire, PowerShell Pro Tools vous demande de dot-source tous les scripts que vous souhaitez inclure avec l’EXE.

Le script Get-LatestAppLog3.ps1 ci-dessous est le script principal à compiler. À l’intérieur, il exécute le script AppLogsComplete.ps1. Pour que PowerShell Pro Tools inclue le fichier dépendant AppLogsComplete.ps1, vous devez dot sourcer le script ou l’intégrer dans la portée du script actuel.

. "$PSScriptRoot\AppLogsComplete.ps1"
Using Dot-Sourcing To Call Another PS1 Inside The Main Script

Une fois que vous avez sourcé tous les scripts dépendants, cliquez à nouveau sur le Package Script as Exe pour commencer à convertir vos scripts en fichier exécutable.

PowerGUI

PowerGUI était l’un des éditeurs de scripts PowerShell originaux. Bien qu’il semble avoir été oublié depuis longtemps, vous pouvez encore trouver des copies qui traînent sur le web. Pourquoi parler d’un éditeur de scripts PowerShell depuis longtemps oublié ? Parce qu’il possède un convertisseur intégré de PS1 en EXE!

Bien que le site web de PowerGUI n’existe plus, vous pouvez toujours trouver une copie sur des sites comme Softpedia.

Compilation du script PS1 en un EXE

Après avoir installé PowerGUI, lancez-le, et vous arriverez à voir une page de démarrage. Pour commencer à compiler vos scripts, vous pouvez soit créer un nouveau script, soit ouvrir un script existant dans la barre d’outils, comme indiqué dans la capture d’écran ci-dessous.

Create a New Script or Open an Existing One

Une fois satisfait de votre script, cliquez sur le menu Outils. Ensuite, choisissez Compiler le script ou appuyez sur Ctrl+F9 sur votre clavier.

Initiate Compiling Script to EXE

Maintenant, configurez comment vous souhaitez que l’EXE s’exécute après la conversion. La fenêtre Compiler le script, comme indiqué ci-dessous, propose différentes options que vous pouvez choisir pour le comportement de l’EXE.

  1. Cliquez sur le bouton Parcourir et localisez votre PS1 que vous souhaitez convertir.

2. PowerGUI prend en charge le Framework cible de Microsoft .NET Framework 3.5 à .NET Framework 4.0.

3. Si vous souhaitez uniquement exécuter l’EXE en arrière-plan, désactivez l’option Afficher la fenêtre de la console PowerShell lorsque le script est exécuté.

4. Vous pouvez également cliquer sur le bouton Dépendances (en bas à gauche) si vous avez d’autres fichiers à inclure. Généralement, ce sont d’autres scripts PowerShell dont votre script dépend.

5. Une fois satisfait de la configuration, cliquez sur OK pour commencer la conversion de votre PS1 en EXE.

Configuring Compiled EXE Behavior

À noter, vous remarquerez un inconvénient avec PowerGUI en termes de contrôle sur la manière dont vous souhaitez que l’EXE s’exécute. PowerGUI ne propose pas beaucoup d’options, telles que l’ajout de paramètres.

PowerGUI ne vous offre pas non plus la possibilité d’intégrer des informations telles que le droit d’auteur, la version et la description, contrairement à d’autres générateurs de PS1 vers EXE. Mais si cela ne vous dérange pas trop, alors PowerGUI est une bonne trouvaille à conserver.

PowerShell Studio

Pour conclure notre liste des convertisseurs de PS1 en EXE, terminons avec l’un des environnements de développement intégrés PowerShell les plus riches en fonctionnalités, PowerShell Studio de Sapien Technologies. Construit exclusivement comme un IDE PowerShell, il serait injuste envers PowerShell Studio de ne démontrer que sa capacité à convertir des PS1 en EXE. Cependant, nous avons un espace limité !

Tout comme PowerShell Pro Tools dans Visual Studio Code, PowerShell Studio a également des exigences strictes pour l’emballage des scripts; telles que .NET Framework 4.8, .NET 5 pour PowerShell 7 et Visual Studio 2015-2019 Runtime

Supposons que vous ayez PowerShell Studio installé, ouvrez PowerShell Studio et créez ou ouvrez un script PowerShell existant. Ce tutoriel utilisera le script Get-LatestAppLog3.ps1.

Navigation des paramètres

Avant de convertir un script dans PowerShell Studio, vous devriez d’abord apprendre la pléthore de façons dont vous pouvez modifier le comportement du fichier EXE résultant.

Cliquez sur le bouton Package dans le coin supérieur droit de la fenêtre, et choisissez Settings. Cela ouvre la fenêtre Script Packager, où vous pouvez définir toutes les options disponibles.

Packaging Script To An Executable File

Chaque option dans le Script Packager joue un rôle important dans la manière dont vous souhaitez que le fichier EXE final soit généré. Ces options sont démontrées dans les sections suivantes avec des captures d’écran.

Moteur de script

La section Moteur de script se concentre sur la plateforme cible et le moteur de script pour compiler votre fichier exécutable.

Commencez par sélectionner votre Cible. Vous pouvez choisir soit une version 32 bits, soit une version 64 bits de Windows, ou vous pouvez choisir les deux pour plus de flexibilité. PowerShell Studio créera un fichier EXE pour chaque plateforme que vous choisissez ici.

Setting up Target Platform And PowerShell Scrip Engine

Paramètres de sortie

Cette section contient des options pour configurer la manière dont le fichier EXE sera généré après la compilation.

  • Fichier de sortie – Le nom du fichier EXE résultant.

Ne pas inclure d’extension de fichier (.exe) car elle sera automatiquement définie pour vous dans le champ.

  • Dossier de sortie – L’endroit où PowerShell Studio enregistrera le fichier exécutable.
  • Résoudre et inclure les scripts externes – Assurez-vous que cette option est cochée si vous avez des scripts dépendants dans votre script principal. Si vous ne l’activez pas, les scripts externes seront ignorés lors de la compilation de votre fichier exécutable.

Assurez-vous toujours que tous les scripts dépendants se trouvent dans le même dossier que le script principal.

  • Signature – Un endroit où vous pouvez rechercher un certificat pour signer le fichier EXE ainsi que le mot de passe du certificat (s’il en a un).
Managing The Output Settings For The Executable File

Fichiers d’icônes

Une icône vous aide à distinguer les applications les unes des autres, et la section Fichiers d’icônes vous donne la possibilité d’ajouter une icône pour votre fichier exécutable.

Pour ajouter un fichier d’icône, cliquez sur le bouton Ajouter un fichier ou faites simplement glisser-déposer le fichier d’icône dans la section Fichiers d’icônes.

Add Icon Files

Restrictions

Dans la section Restrictions, vous pouvez inclure ou exclure des critères pour permettre l’exécution d’EXE.

Le fait de cocher un Système d’exploitation dans ce champ garantira que l’EXE résultant s’exécutera uniquement sur cet système d’exploitation. De même, vous pouvez définir des critères tels qu’un utilisateur spécifique doit être connecté, l’ordinateur doit avoir une certaine adresse MAC, et plus encore.

Comme vous pouvez le voir ci-dessous, vous avez un contrôle total sur le moment où l’EXE résultant s’exécute.

Adding Security Via Execution Restrictions

Informations sur la version

Lorsque PowerShell Studio crée un EXE, cet EXE a divers attributs de fichier. Dans la section Informations sur la version, vous pouvez définir l’apparence de ces attributs.

Ici, vous pouvez définir des attributs tels que la version du fichier, la version du produit, les droits d’auteur, et ainsi de suite. Vous pouvez voir tous les attributs disponibles ci-dessous.

Setting File Version Information

Options de construction

Enfin, vous trouverez une section Options de construction. Dans cette section, vous pouvez ajouter des commandes personnalisées de pré-construction ou de post-construction à exécuter. Cette option exécutera des commandes PowerShell avant ou après la compilation du script en un fichier exécutable.

Disons que vous voulez exécuter un code juste après que PowerShell Studio ait fini de créer l’EXE. Pour ce faire, cliquez sur le bouton Nouveau (Insérer) dans la boîte Commandes post-construction. Les commandes de pré-construction et de post-construction acceptent directement les commandes PowerShell.

Alternativement, vous pouvez cliquer sur le bouton Ajouter un fichier (points de suspension) et sélectionner une autre application ou script PowerShell à exécuter.

Adding Pre-Build or Post-Build Custom Commands To Execute

Après avoir tout configuré, cliquez sur OK pour empaqueter le script dans un exécutable. L’emplacement du fichier s’ouvrira automatiquement pour que vous puissiez vérifier le fichier exécutable.

Prise en compte des dépendances externes des scripts PowerShell

A PowerShell script sometimes isn’t a self-contained unit. A script can also call other scripts. When converting to an EXE, some of the tools discussed here do not automatically find these dependent scripts and compile them.

Lorsqu’un script contient une référence à un autre script et que ce dernier est converti en EXE, le chemin peut changer. Dans ce cas, le code PowerShell à l’intérieur de l’EXE ne peut pas trouver le script dépendant, ce qui entraîne un échec.

Peut-être avez-vous un script que vous souhaitez convertir et qui appelle d’autres scripts dans le même dossier. Lorsque vous exécutez le script via la console PowerShell, il peut trouver ces scripts car ils sont tous dans le même répertoire de travail. Lorsque vous convertissez un script en EXE, cela peut ne plus fonctionner.

Si vous avez l’intention de convertir un PS1 en EXE et que ce script appelle d’autres scripts dans le même répertoire, ajoutez le code suivant en haut de votre script.

Ce code résout le chemin d’un script externe que vous exécutez à partir du script principal tant qu’ils sont tous les deux dans le même répertoire.

if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript")
 { $ScriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition }
 else
 { $ScriptPath = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0]) 
     if (!$ScriptPath){ $ScriptPath = "." } }

Comparaison des fonctionnalités

Si vous n’avez pas encore décidé comment créer un EXE à partir d’un script PowerShell, jetez un œil au tableau ci-dessous. Ce tableau fournit une vue d’ensemble des fonctionnalités de chaque outil pour vous aider à décider quel outil choisir comme convertisseur de PS1 en EXE.

Features Comparison

Source:
https://adamtheautomator.com/ps1-to-exe/