De De Facto Gids voor het Converteren van een PS1 naar EXE (7 Manieren)

Je kunt PowerShell-scripts op verschillende manieren oproepen, maar ze hebben allemaal één nadeel: je kunt ze niet eenvoudig uitvoeren als een standaard Windows-programma (EXE). Misschien wil je voorkomen dat de code in een script wordt bewerkt of het je gebruikers gemakkelijker maken om scripts uit te voeren. Het is tijd om te leren hoe je een PS1-bestand kunt omzetten naar een EXE.

In deze tutorial leer je hoe je PS1 naar EXE-generator kunt gebruiken, en je krijgt ook de kans om ze te vergelijken, zodat je kunt beslissen welke het beste bij jouw voorkeur past.

Vereisten

In deze tutorial worden verschillende tools gedemonstreerd met stapsgewijze instructies over hoe je PS1 naar EXE kunt converteren. Zorg ervoor dat je aan de onderstaande vereisten voldoet om mee te kunnen doen.

  • A Windows computer with an administrator privileges
  • Vanaf Windows 7, 8.1 en 10 is PowerShell al inbegrepen bij het installeren van het besturingssysteem. Hoewel sommige scripts kunnen worden uitgevoerd met PowerShell 3.0, is het veel beter om PowerShell 5.1 of PowerShell 7
  • te hebben. Zorg ervoor dat je PowerShell uitvoeringsbeleid is ingesteld om scriptuitvoering toe te staan

PS2EXE

De PS2EXE-tool is het eerste hulpmiddel op onze lijst. PS2EXE is een gratis, open-source PowerShell-module die, volgens de auteur Ingo Karstein, “het PowerShell-script niet naar een andere taal omzet. Het omhult het script met een lichtgewicht PowerShell-host geschreven in C# en compileert de dynamisch gegenereerde C# broncode in het geheugen naar een EXE-bestand.”

Bezoek Ingo Karstein’s blog om meer te weten te komen over hoe PS2EXE begon. De ontwikkeling van de module stopte rond 2017, maar Markus Scholtes nam PS2EXE’s evolutie over door ook een GUI-versie te maken.

PS2EXE-module installeren

PS2EXE begon als een PowerShell-script, en toen Markus Scholtes de ontwikkeling overnam, werd er een module beschikbaar gesteld. Omdat PS2EXE de module gebruikt om uw script naar een uitvoerbaar bestand om te zetten, moet u deze installeren vanuit de PowerShell Gallery.

Volg de onderstaande instructies om de PS2EXE-module te installeren.

  1. Open een PowerShell-console als beheerder.

2. Voer het Install-Module commando uit om de module van de PowerShell Gallery te downloaden en te installeren

Install-Module ps2exe

3. Typ Y en druk op Enter zodra je het bericht ziet over een niet-vertrouwde repository. Maak je geen zorgen. Dit bericht is onschadelijk.

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

PS1 naar EXE converteren via de commandoregel

PS2EXE biedt twee manieren om PowerShell-scripts naar EXE-bestanden om te zetten; een opdrachtregel en een GUI. Laten we eerst het gebruik van de opdrachtregel behandelen.

Om een enkel PowerShell-script naar EXE om te zetten via de opdrachtregel, heb je een enkele regel nodig die het hoofdcommando van PS2EXE (Invoke-PS2EXE) geeft, gevolgd door het pad van het script dat je wilt omzetten en het pad naar het EXE-bestand dat je wilt maken.

## Gebruik de volledige commandonaam
Invoke-ps2exe .\source.ps1 .\target.exe

## Gebruik het alias
ps2exe .\source.ps1 .\target.exe

Je kunt nu target.exe uitvoeren, en het zal de code uitvoeren die is gedefinieerd in het script source.ps1. Als je de NoConsole-parameter niet hebt gebruikt bij het converteren van je script, verschijnt er een PowerShell-console wanneer je het bestand target.exe uitvoert.

Console verbergen

In het vorige voorbeeld, wanneer je target.exe uitvoert, verschijnt er een typische PowerShell-console. Meestal wil je dat niet zien. Om dat te voorkomen, kun je de NoConsole-parameter gebruiken bij het maken van het EXE-bestand, zoals hieronder wordt getoond.

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

Je kunt er ook voor kiezen om het EXE-bestand alleen te compileren voor x86- of x64-runtime en anderen. Je kunt een lijst vinden van beschikbare parameters op de GitHub-releasepagina.

Het omzetten van PS1 naar EXE via de PS2EXE-GUI Tool

Als je geen fan bent van de command-line, kun je ook een GUI gebruiken met de PS2EXE-module. Iets later ontwikkeld, biedt de GUI-versie bijna alle functionaliteit van de command-line versie.

Het kost slechts een paar klikken om PS1 naar EXE om te zetten met de GUI-versie van PS2EXE. En in tegenstelling tot de command line, kun je het bronbestand (PS1) selecteren met een handige Verkenner-dialoogvenster.

Om de GUI-versie uit te voeren, heb je .NET 4.x op je computer nodig. Als je alleen .NET 3.5x hebt, kun je de PS2EXE-GUI voor .NET 3.5x-versie apart downloaden.

Assuming you have already installed the PS2EXE PowerShell module from above, open up File Explorer and navigate to either of the PS2EXE module folders below and open the folder representing the module version.

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

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

In deze mappen vind je een bestand genaamd Win-PS2EXE.exe.

  1. Open het C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>\Win-PS2EXE.exe hulpprogramma.

2. Klik op de puntjes direct rechts van het Bronbestand-vak om het PS1-script te lokaliseren dat je wilt converteren.

3. Definieer de waarde voor het Doelbestand en zorg ervoor dat je de .exe-bestandsextensie toevoegt.

4. Kies eventuele aanpassingen voor de conversie hieronder. Dit is eenvoudig een GUI-weergave van de parameters die je kunt gebruiken voor je script, net als de command-line versie.

5. Klik op Compileren om het conversieproces te starten.

Converting PS1 to EXE with PS2EXE GUI

6. Wanneer je op de knop Compileren klikt, opent PS2EXE een PowerShell-sessie en voert de conversie uit. Zodra dit is voltooid, druk op Enter of sluit het consolevenster.

Successfully Converted PS1 to EXE

Ter info: Sommige uitvoerbare bestanden gecompileerd met PS2EXE kunnen worden gedetecteerd als een virus door je antivirussoftware. Meld deze valse positieven aan je antivirusleverancier.

PS1 naar EXE

PS1 naar EXE is een ander gratis desktopprogramma ontwikkeld door F2KO Software waarmee je een PS1-bestand kunt converteren naar een EXE-bestand. Ps1 naar Exe is, in tegenstelling tot PS2EXE, een GUI-tool met een eenvoudige scripteditor.

Net als PS2EXE heeft Ps1 to Exe zowel de GUI- als de command-line-versie. In plaats van de PowerShell-console vereist Ps1 to Exe echter dat je de commando’s uitvoert in de opdrachtprompt.

Helaas, hoewel de website van F2KO nog steeds actief is, lijkt er geen manier te zijn om PS1 naar EXE daar te downloaden. Gelukkig circuleert er een downloadbare installer van deze tool op internet.

Laten we doornemen hoe je PS1 naar EXE kunt uitvoeren en gebruiken om een EXE-bestand te maken van een PowerShell-script.

PS1 naar EXE Converteren Met GUI

Na het installeren en starten van Ps1 to Exe, zul je merken dat PS1 to EXE een eenvoudige script-editor heeft. Binnen deze script-editor kun je scripts bouwen en opslaan, en op een knop klikken om ze te converteren.

Ps1 to Exe ondersteunt dot-sourcing; let op hoe een ander PS1-bestand werd aangeroepen met de onderstaande commandoregel.

## Roep AppLogsComplete.ps1 aan
try { .\AppLogsComplete.ps1 } catch { exit }

Om een script naar een EXE te converteren met PS1 to EXE:

  1. Open de PS1 to EXE-tool vanaf je bureaublad.

2. Klik op Bestand —> Open, zoek het script dat je wilt converteren en open het.

Zodra je het script geopend hebt, configureer hoe je wilt dat de gecompileerde EXE wordt uitgevoerd. Aan de rechterkant van het scherm zie je een paneel met drie tabbladen om te verkennen. Elk tabblad heeft een verschillende configuratieoptie die je kunt kiezen.

Configuring The EXE Output Settings

3. Om afhankelijke scripts toe te voegen, klik je op het Embed-tabblad en klik je vervolgens op Toevoegen.

4. Als je tevreden bent met de conversieopties, klik je op de knop Converteren in de bovenste werkbalk om het script naar een EXE te converteren.

Adding Dependent Scripts And Converting Script to EXE

PS1 naar EXE converteren via de commandoregel

Als je liever de commandoregel gebruikt, heet de PS1 to EXE CLI ps1_to_exe.exe maar het gebruik ervan is een beetje lastig.

Met PS1 to EXE geopend:

  1. Open een Opdrachtprompt als beheerder

2. Verander de werkmap naar de installatiemap van PS1 to EXE.

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

3. Voer nu ps1_to_exe uit om de PS1 naar een uitvoerbaar bestand te converteren.

De onderstaande opdracht bevat ook een afhankelijk script in het gecompileerde EXE-bestand en stelt het uitvoerbare bestand in op een 64-bits Windows OS.

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

Hieronder wordt een demonstratie gegeven van het daadwerkelijke conversieproces en de uitvoerdetails.

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

IExpress 2.0

Als je liever geen extra tool downloadt, heb je geluk, want je hebt het ouderwetse IExpress-hulpprogramma tot je beschikking. IExpress is een ingebouwde Windows-toepassing die meestal wordt gebruikt voor het verpakken van bestanden of het maken van software-installatieprogramma’s.

Het blijkt dat IExpress ook PS1 naar EXE kan converteren terwijl het afhankelijkheidsbestanden samen in één uitvoerbaar bestand compileert!

Om een eenvoudig PowerShell-script naar EXE te converteren:

  1. Je moet IExpress openen als beheerder. Druk op de Windows-toets + R om het Uitvoeren-venster te openen, typ iexpress en druk vervolgens op de Ctrl+Shift+Enter-toets.
Running IExpress As Administrator

2. Op de welkomstpagina van IExpress selecteer je Nieuwe Self-Extraction Directive File maken en klik je op Volgende om je pakket te configureren. Het Self Extraction Directive (SED)-bestand beheert de opties die worden gebruikt bij het bouwen van een installatiepakket; beschouw het als een configuratiebestand.

Create New Self Extraction Directive File

3. Selecteer de optie Bestanden uitpakken en een installatieopdracht uitvoeren en klik op Volgende. Als u een software-installatieprogramma maakt, worden met deze optie bestanden uitgepakt die u in het pakket wilt opnemen. Met deze optie kunt u ook een aangepaste opdracht schrijven om het script uit te voeren wanneer u het uitvoerbare bestand uitvoert.

Selecting An Action To Take When Running The EXE

4. Geef nu een Pakkettitel op en klik op Volgende. De pakkettitel verschijnt in alle prompts die de gebruiker tijdens de installatie zal zien.

De pakkettitel is alleen van toepassing als u een software-installatieprogramma maakt. In dit geval maakt de titel niet uit.

Setting A Title For The Package

6. Kies vervolgens Geen prompt. Door Geen prompt te kiezen, wordt de gebruiker niet onnodig geprompt met een dialoogvenster wanneer ze het EXE-bestand uitvoeren.

No Prompt

6. Als u het pakket maakt voor een project dat een gebruikersovereenkomst (EULA) vereist, kunt u ervoor kiezen om een licentie toe te voegen die wordt weergegeven wanneer u het EXE-bestand uitvoert. Kies voor deze demonstratie echter de optie Geen licentie weergeven en klik op Volgende.

Adding an End User License Agreement

7. Klik nu op Toevoegen en blader naar alle scripts die u in dit EXE-bestand wilt opnemen. Zorg ervoor dat u het hoofdscript dat u wilt aanroepen en eventuele afhankelijke scripts en andere bestanden die de scripts gebruiken, toevoegt.

Selecting Files To Include In The Package

8. Op het venster Programma installeren om te starten geeft u het pad naar de powershell.exe-engine op met behulp van de parameter Bestand. Zorg er ook voor dat u de parameter ExecutionPolicy instelt op Bypass om ervoor te zorgen dat eventuele vooraf geconfigureerde uitvoeringsbeleidsregels de uitvoering van het script niet verhinderen.

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

9. Volgende, kunt u definiëren hoe u wilt dat de EXE-vensters zich gedragen wanneer ze worden uitgevoerd. Als de EXE in de achtergrond moet worden uitgevoerd, kies dan Verborgen en klik op Volgende. Verborgen is het meest voorkomende venstergedrag.

Selecting EXE’s Window Behavior On Execution

10. Omdat u slechts een EXE op de achtergrond uitvoert, is er geen noodzaak om een Afgericht bericht op te nemen. Selecteer Geen bericht en klik op Volgende.

Setting Up Post Installation Message

11. Selecteer nu het pad naar de EXE die u wilt maken. Hier kunt u ook een paar verschillende opties inschakelen. Zodra dit klaar is, klik op Volgende.

  • Verberg bestandsuitpakkingvoortgangsanimatie van gebruiker – Als uw EXE op de achtergrond wordt uitgevoerd, houd deze optie dan uitgeschakeld.
  • Sla bestanden op met lange bestandsnaam binnen het pakket – Om lange bestandsnamen te ondersteunen tijdens het uitpakken wanneer de EXE wordt uitgevoerd. De optie moet uitgeschakeld blijven als u het pakket op Win 95 uitvoert en u een INF-bestand zult gebruiken tijdens de installatie.
Setting Up Target Path And File Name

12. Als u wilt dat de EXE een herstart uitvoert nadat het script is voltooid, kunt u hier Altijd herstarten selecteren. Nadat u een optie heeft geselecteerd, klikt u op Volgende.

Choosing Whether To Require A Restart Or Not

13. Selecteer nu SED-bestand opslaan (Self Extraction Directive) en klik op Volgende. Het opslaan van een SED-bestand stelt u in staat om eventuele opties die u tot nu toe hebt opgegeven, op een later tijdstip te wijzigen. Het SED-bestand bevat antwoorden op alle tot nu toe verstrekte waarden.

Saving Information About The Package Configuration

14. Nu is het enige dat overblijft, het samenstellen van het pakket. Klik op Volgende, en je zult een proceslog zien. Om het pakket te voltooien, klik op Voltooien, en je bent klaar.

Vereist uitvoeren met beheerdersrechten

Als je een script hebt dat moet worden uitgevoerd als beheerder, biedt IExpress je geen optie om dat te doen, maar het is nog steeds mogelijk.

Voordat je IExpress uitvoert, kopieer de onderstaande code en plak deze bovenaan je script. Deze code controleert of het script wordt uitgevoerd als beheerder. Zo niet, dan wordt het script automatisch afgesloten en opnieuw uitgevoerd met beheerdersrechten.

Onthoud dat je de WindowStyle **parameter op het scherm Venster tonen moet wijzigen, afhankelijk van hoe je het venster van de EXE wilt tonen of verbergen wanneer je het uitvoert.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## Test of het script als beheerder wordt uitgevoerd, zo niet, voer het opnieuw uit als beheerder
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))
            ## Vensterstijlen: Normaal, Geminimaliseerd, Gemaximaliseerd en Verborgen

						## ------> DE REST VAN JE SCRIPT KOMT HIER <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

Als je graag scripts schrijft in de PowerShell ISE, past deze tool bij jouw stijl. ISE Steroids is een uitbreiding voor de PowerShell ISE-editor verpakt als een PowerShell-module die veel ISE-functies toevoegt.

ISE Steroids heeft veel functies, maar waar je hier voor bent, is het vermogen om een script naar een EXE om te zetten, dus laten we erin duiken.

  1. Als je ISE Steroids al geïnstalleerd hebt, open dan de PowerShell ISE.

2. Voer in de geïntegreerde console Start-Steroids uit om de extensie uit te voeren en Steroids te laden.

3. Open een bestaand script of schrijf een nieuw script in het bewerkingsvenster. Deze tutorial zal gebruik maken van deze bestanden.

4. Klik op de Tools —> Code omzetten naar EXE optie, net zoals op de onderstaande screenshot.

Compiling PS1 to EXE

5. Definieer nu alle opties die je wilt toepassen op de resulterende EXE in het kleine venster, zoals hieronder weergegeven. Deze opties zijn parameters, hetzelfde als die van PS2EXE, om de eigenschappen en het gedrag van je EXE-bestand te configureren.

Configuration For The Executable File

6. Zodra je alle opties hebt ingesteld, klik je op de Toepassing maken knop. ISE Steroids zal je dan vragen om een doelpad te selecteren. Daarna ben je klaar met het omzetten van je PS1 naar EXE.

Visual Studio Code en PowerShell Pro Tools

Voor onze volgende editor brengen we je Visual Studio (VS) Code. VS Code is Microsoft’s aanbevolen vervanging voor de PowerShell ISE en wordt door veel PowerShell-ontwikkelaars omarmd.

Hoewel VS Code geen ingebouwde manier heeft om PowerShell-scripts naar EXE-bestanden om te zetten, kun je dit toch voor elkaar krijgen met de PowerShell Pro Tools-extensie. Naast het omzetten van scripts naar EXE helpt de PowerShell Pro Tools-extensie je bij het verpakken van scripts, bevat het een GUI-ontwerper en meer.

PowerShell Pro Tools vereist zowel het .NET 4.6.2 (of later) Developer Pack als .NET Core 1.0 of later voor het verpakken van scripts.

Je gebruikt de Get-LatestAppLog3.ps1 en AppLogsComplete.ps1 voor deze demonstratie.

Als je VS Code en de PowerShell Pro Tools-extensie geïnstalleerd hebt:

  1. Open VS Code en een PowerShell-script dat je naar een EXE wilt converteren.

2. Klik rechtsboven in VS Code op de Script verpakken als Exe-knop zoals hieronder weergegeven.

Compiling PowerShell Script To An EXE

3. Wanneer je voor de eerste keer een EXE maakt vanuit een script, zal PowerShell Pro Tools een bestand genaamd package.psd1 aanmaken in de hoofdmap van de huidige werkruimte.

Showing Workspace Root and PowerShell Data File (PSD1)

4. Binnen het bestand package.psd1 wordt het exacte pad van het script automatisch ingevuld voor de sleutel Root. Definieer de sleutel Output Path om het pad op te geven waar de EXE moet worden opgeslagen, zoals hieronder weergegeven.

Setting up Root and Output Path

5. Wanneer je een EXE maakt vanuit een script, zul je verschillende logberichten opmerken in het Output-venster onderaan het scherm. Als er fouten optreden tijdens het compileren van het script, worden ze hier weergegeven.

Logs Shown In The Output Pane

Compileren van Andere Scripts in dezelfde EXE

Als je afhankelijke scripts hebt die worden aangeroepen in je hoofdscript, kan de PowerShell Pro Tools-extensie hier ook voor zorgen. Hiervoor moet je, om dat te laten gebeuren, de scripts waarvan je wilt dat ze zijn opgenomen in de EXE dot-sourcen.

Het script Get-LatestAppLog3.ps1 hieronder is het hoofdscript om te compileren. Binnen dit script wordt het script AppLogsComplete.ps1 uitgevoerd. Om ervoor te zorgen dat PowerShell Pro Tools het afhankelijke bestand AppLogsComplete.ps1 opneemt, moet je het script dot-sourcen of het binnen het huidige script bereik brengen.

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

Zodra je alle afhankelijke scripts hebt geïmporteerd, klik je opnieuw op de Pakket Script als Exe om je scripts om te zetten naar een uitvoerbaar bestand.

PowerGUI

PowerGUI was een van de oorspronkelijke PowerShell-scripteditors. Hoewel het lijkt alsof het al lang vergeten is, kun je nog steeds kopieën ervan vinden op het web. Waarom praten over een lang vergeten PowerShell-scripteditor? Omdat het een ingebouwde PS1 naar EXE-converter heeft!

Hoewel de website van PowerGUI niet meer bestaat, kun je nog steeds een kopie vinden op sites zoals Softpedia.

PS1-script compileren naar een EXE

Na het installeren van PowerGUI, start je het programma en zie je een startpagina. Om je scripts te compileren, kun je een nieuw script maken of een bestaand script openen vanuit de werkbalk, zoals te zien is in de onderstaande schermafbeelding.

Create a New Script or Open an Existing One

Zodra je tevreden bent met je script, klik je op het Tools-menu. Kies vervolgens Script compileren of druk op Ctrl+F9 op je toetsenbord.

Initiate Compiling Script to EXE

Configureer nu hoe je wilt dat de EXE wordt uitgevoerd na de conversie. Het venster Script compileren, zoals hieronder wordt weergegeven, bevat verschillende opties waaruit je kunt kiezen voor het gedrag van de EXE.

  1. Klik op de Bladeren-knop en zoek je PS1-bestand dat je wilt converteren.

2. PowerGUI ondersteunt Target Framework van Microsoft .NET Framework 3.5 tot .NET Framework 4.0.

3. Als je alleen wilt dat het EXE-bestand op de achtergrond wordt uitgevoerd, schakel dan de optie Toon PowerShell Console-venster wanneer het script wordt uitgevoerd uit.

4. Je kunt ook op de knop Afhankelijkheden klikken (linksonder) als je andere bestanden wilt toevoegen. Meestal zijn dit andere PowerShell-scripts waar je script van afhankelijk is.

5. Als je tevreden bent met de configuratie, klik dan op OK om je PS1 naar EXE te converteren.

Configuring Compiled EXE Behavior

Terzijde, je zult merken dat PowerGUI een nadeel heeft wat betreft het controleren van hoe je wilt dat de EXE wordt uitgevoerd. PowerGUI biedt niet veel opties, zoals het toevoegen van parameters.

PowerGUI biedt ook niet de mogelijkheid om informatie in te sluiten, zoals auteursrecht, versie en beschrijving, in tegenstelling tot andere PS1 naar EXE generatoren. Maar als je dat niet erg vindt, dan is PowerGUI een goede vondst die je kunt behouden.

PowerShell Studio

Om onze lijst van PS1 naar EXE converters af te ronden, laten we eindigen met een van de meest uitgebreide PowerShell IDEs, PowerShell Studio van Sapien Technologies. Speciaal ontwikkeld als een exclusieve PowerShell IDE, zou het een onrecht zijn aan PowerShell Studio om alleen zijn vermogen te demonstreren om PS1s naar EXEs te converteren. Toch hebben we maar een beperkte hoeveelheid ruimte!

Net als PowerShell Pro Tools in Visual Studio Code, heeft PowerShell Studio ook strenge eisen voor het verpakken van scripts; zoals .NET Framework 4.8, .NET 5 voor PowerShell 7 en Visual Studio 2015-2019 Runtime

Als u PowerShell Studio geïnstalleerd heeft, opent u PowerShell Studio en maakt u een nieuw PowerShell-script aan of opent u een bestaand script. Deze handleiding zal het Get-LatestAppLog3.ps1 script gebruiken.

Instellingen Navigeren

Voordat u een script converteert in PowerShell Studio, moet u eerst leren hoe u het gedrag van het resulterende EXE-bestand kunt wijzigen.

Klik op de knop Package in de rechterbovenhoek van het venster en kies Instellingen. Dit opent het venster Scriptverpakker, waar u alle beschikbare opties kunt definiëren.

Packaging Script To An Executable File

Elke optie in de Scriptverpakker speelt een belangrijke rol in hoe u wilt dat de output van uw EXE-bestand eruit komt te zien. Deze opties worden gedemonstreerd in de volgende secties met screenshots.

Script Engine

Het gedeelte Script Engine richt zich op het doelplatform en de script engine om uw uitvoerbaar bestand te compileren.

Begin met het selecteren van je Doel. Je kunt kiezen voor een 32-bits of 64-bits versie van Windows, of je kunt beide kiezen voor flexibiliteit. PowerShell Studio zal een EXE maken voor elk platform dat je hier kiest.

Setting up Target Platform And PowerShell Scrip Engine

Uitvoerinstellingen

In deze sectie vind je opties om te configureren hoe het EXE-bestand eruit zal zien na het compileren.

  • Uitvoerbestand – De naam van het resulterende EXE-bestand.

Voeg geen bestandsextensie toe (.exe), omdat dit automatisch voor je wordt ingesteld voor dit veld.

  • Uitvoermap – Waar PowerShell Studio het uitvoerbare bestand zal opslaan.
  • Externe scripts oplossen en opnemen – Zorg ervoor dat deze optie is aangevinkt als je afhankelijke scripts hebt in je hoofdscript. Als je dit niet inschakelt, worden externe scripts genegeerd bij het compileren van je uitvoerbare bestand.

Zorg er altijd voor dat eventuele afhankelijke scripts zich in dezelfde map bevinden als het hoofdscript.

  • Ondertekening – Een plaats waar je kunt zoeken naar een certificaat om de EXE te ondertekenen samen met het wachtwoord van het certificaat (indien van toepassing).
Managing The Output Settings For The Executable File

Pictogrambestanden

Een pictogram helpt je applicaties van elkaar te onderscheiden, en de sectie Pictogrambestanden geeft je de optie om een pictogram toe te voegen aan je uitvoerbare bestand.

Om een pictogrambestand toe te voegen, klik je op de knop Bestand toevoegen of sleep je eenvoudig het pictogrambestand naar de sectie Pictogrambestanden.

Add Icon Files

Beperkingen

In de Beperkingen sectie kunt u criteria toevoegen of uitsluiten om de uitvoering van EXE-bestanden toe te staan.

Het controleren van een Besturingssysteem in dit veld zorgt ervoor dat het resulterende EXE-bestand alleen wordt uitgevoerd op dat besturingssysteem. Op dezelfde manier kunt u criteria definiëren zoals een specifieke gebruiker moet zijn ingelogd, de computer moet een bepaald MAC-adres hebben en meer.

Zoals u hieronder kunt zien, heeft u volledige controle over wanneer het resulterende EXE-bestand wordt uitgevoerd.

Adding Security Via Execution Restrictions

Versie-informatie

Wanneer PowerShell Studio een EXE-bestand maakt, heeft dat EXE-bestand verschillende bestandsattributen. In de Versie-informatie sectie kunt u definiëren hoe die attributen eruit zien.

Hier kunt u attributen instellen zoals Bestandsversie, Productversie, Copyright, enzovoort. U kunt alle beschikbare attributen hieronder zien.

Setting File Version Information

Bouwopties

Tenslotte vindt u een Bouwopties sectie. In deze sectie kunt u aangepaste voor- of na-bouwopdrachten toevoegen om uit te voeren. Met deze optie kunt u PowerShell-opdrachten uitvoeren vóór of na het compileren van het script naar een uitvoerbaar bestand.

Stel dat u wat code wilt uitvoeren direct nadat PowerShell Studio klaar is met het maken van het EXE-bestand. Om dit te doen, klikt u op de Nieuw (Invoegen) knop in het Voor-nabouwopdrachten vak. Zowel de voor- als na-bouwopdrachten accepteren PowerShell-opdrachten rechtstreeks.

Als alternatief kunt u op de Bestand toevoegen (ellipsis) knop klikken en een andere toepassing of PowerShell-script selecteren om uit te voeren.

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

Na alles te hebben ingesteld, klik je op OK om het script te verpakken tot een uitvoerbaar bestand. De locatie van het bestand zal automatisch voor je worden geopend, zodat je het uitvoerbare bestand kunt controleren.

Rekening houden met Externe PowerShell Script Afhankelijkheden

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.

Wanneer een script verwijst naar een ander script en dat script wordt omgezet naar een EXE, kan het pad veranderen. Als dat gebeurt, kan de PowerShell-code binnen de EXE het afhankelijke script niet vinden en mislukt het.

Misschien heb je een script dat je wilt converteren dat andere scripts in dezelfde map aanroept. Wanneer je het script uitvoert via de PowerShell-console, kan het deze scripts vinden omdat ze zich allemaal in dezelfde werkmap bevinden. Wanneer je een script naar een EXE converteert, kan dit echter misgaan.

Als je van plan bent een PS1 naar een EXE te converteren en dat script andere scripts in dezelfde map aanroept, voeg dan de volgende codefragment toe aan de bovenkant van je script.

Het onderstaande codefragment lost het pad van een extern script op dat je uitvoert vanuit het hoofdscript, zolang ze zich beide in dezelfde map bevinden.

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 = "." } }

Vergelijking van functies

Als je nog steeds niet hebt besloten hoe je een EXE wilt maken van een PowerShell-script, bekijk dan de onderstaande tabel. Deze tabel geeft een overzicht van de functies van elke tool om je te helpen beslissen welke tool jouw keuze van PS1 naar EXE-converter zal zijn.

Features Comparison

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