Technical Anshu
Tutorials Blog
PowerShell-zu-EXE-Anleitung

Konvertieren Sie ein PowerShell-Skript in eine EXE-Komplettanleitung mit PS2EXE

Sie haben ein Skript geschrieben, das ein Problem in zehn Sekunden behebt – aber die Leute, die es brauchen, öffnen PowerShell nicht, ändern keine Ausführungsrichtlinie und führen keine Textdatei aus. Konvertieren Sie es in eine EXE-Datei, auf die sie doppelklicken können. Hier ist die vollständige Konvertierung, richtig durchgeführt, mit klarer Darstellung ihrer Grenzen.

By Technical AnshuWindows 10 / 116 minute read
Sehen Sie sich das Video an, um Schritt für Schritt zu sehen, wie das Skript konvertiert und auf dem Bildschirm ausgeführt wird

Jeder Windows-Administrator hat einen Ordner mit brillanten kleinen Skripten, die niemand sonst verwenden kann. Das Skript ist in Ordnung; Die Verpackung ist das Problem. Eine .ps1-Datei wird beim Doppelklicken im Editor geöffnet, löst bei der Ausführung Richtlinienwarnungen aus und sieht für einen technisch nicht versierten Benutzer wie ein Virus aus. Durch die Konvertierung in eine EXE-Datei mit dem kostenlosen PS2EXE-Modul wird das Problem in etwa einer Minute behoben. Auf dieser Seite ist die gesamte Aufgabe in der Reihenfolge aufgeführt: Was die Konvertierung wirklich bewirkt, die Installation, der Befehl, die Optionen, die wichtig sind, und die Tests, die Sie ehrlich halten.

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
Die ganze Konvertierung in drei Zeilen – einmal das kostenlose PS2EXE-Modul installieren, konvertieren, ausführen. Die gezeigte Befehlsausgabe ist ein Beispiel.
1

Was das Konvertieren tatsächlich bewirkt

Ein PowerShell-Skript ist eine Textdatei. Es benötigt PowerShell zum Öffnen, die richtige Ausführungsrichtlinie zum Ausführen und einen Benutzer, der keine Angst vor einem blauen Fenster voller Text hat. Eine konvertierte EXE-Datei beseitigt alle drei Reibungspunkte: Der Benutzer doppelklickt auf eine Datei, genau wie bei jedem anderen Programm.

Machen Sie sich klar, was das Tool unter der Haube tut. PS2EXE, das kostenlose Modul, das in diesem Handbuch verwendet wird, verpackt Ihr Skript in ein kleines .NET-Programm. Der Skripttext wird in codierter Form innerhalb der EXE-Datei übertragen, und wenn die EXE-Datei ausgeführt wird, übergibt sie das Skript an die in Windows integrierte PowerShell-Engine. Nichts wird in Maschinencode kompiliert und das Skript wird nicht in ein Geheimnis umgewandelt – eine spätere Seite in diesem Satz deckt diese Einschränkung vollständig ab.

Dieser Wrapper ist immer noch wirklich nützlich. Es ist der Unterschied zwischen dem Senden einer Textdatei mit sechs Anweisungen an einen Kollegen und dem Senden einer Schaltfläche, die einfach funktioniert.

2

Schritt 1 – Testen Sie die PS1, bis sie langweilig wird

Konvertieren Sie niemals ein ungetestetes Skript. Die EXE-Datei verbirgt die Konsole und den Fehlerstrom auf eine Weise, die das Debuggen verlangsamt, sodass jeder Fehler gefunden werden muss, während das Skript noch ein einfaches .ps1 ist.

  1. Führen Sie das Skript als normaler Benutzer und als Administrator aus
  2. Führen Sie es nach Möglichkeit auf einem Computer aus, der nicht Ihr eigener ist – Pfade und Laufwerke sind unterschiedlich
  3. Füttere ihn absichtlich einmal mit dem falschen Eingang und beobachte, was er tut
  4. Konvertieren Sie es nur, wenn es sich jedes Mal gleich verhält
3

Schritt 2 – Installieren Sie das PS2EXE-Modul einmal

PS2EXE wird von seinem Autor Markus Scholtes in der PowerShell-Galerie veröffentlicht und ist kostenlos. Sie installieren es einmalig auf Ihrem eigenen PC; Die Leute, die die EXE-Datei erhalten, installieren nichts.

  1. Öffnen Sie PowerShell und führen Sie Install-Module -Name ps2exe aus.
  2. Beim ersten Mal fordert PowerShell Sie möglicherweise auf, dem PSGallery-Repository zu vertrauen. Antworten Sie mit „Ja“, wenn Sie die Installation selbst gestartet haben
  3. Wenn Modulinstallationen blockiert sind, lassen Sie sie für Ihre eigene Sitzung mit Set-ExecutionPolicy -Scope CurrentUser RemoteSigned zu und beachten Sie, dass Sie nur eine Sicherheitseinstellung für Ihr eigenes Konto ändern

Es gibt auch ein grafisches Frontend, Win-PS2EXE, das alle Optionen als Kontrollkästchen und Felder anzeigt. Es erzeugt genau die gleiche EXE-Datei wie die Befehlszeile – verwenden Sie diejenige, die Ihnen klarer erscheint.

4

Schritt 3 – Führen Sie die Konvertierung durch

Der Basisbefehl benennt ein Eingabeskript und eine Ausgabedatei:

  1. Invoke-PS2EXE -inputFile ".\DiskCleanup.ps1" -outputFile ".\DiskCleanup.exe"
  2. Der kürzere Alias ps2exe akzeptiert dieselben Parameter
  3. Fügen Sie -noConsole hinzu, wenn das Skript ein Fenster oder Formular anzeigt und Sie kein schwarzes Konsolenfenster dahinter haben möchten
  4. Fügen Sie -requireAdmin hinzu, wenn das Skript die Systemeinstellungen ändert, damit Windows beim Start nach einer Erhöhung fragt, anstatt dass das Skript auf halbem Weg fehlschlägt
  5. Fügen Sie -iconFile ".\tool.ico" plus -title, -product, -company und -version hinzu, wenn die Datei freigegeben werden soll – diese füllen die Registerkarte „Details“ der Dateieigenschaften aus

Das auf dieser Seite verlinkte Video führt Sie am Bildschirm durch die Konvertierung; Bei den oben genannten Optionen handelt es sich um die gleichen, die auch verwendet werden, und im Rest dieses Leitfadensatzes werden sie ausführlich erläutert.

5

Schritt 4 – Testen Sie die EXE-Datei wie ein Fremder

Eine konvertierte EXE-Datei ist für Windows ein neues Programm. Testen Sie es so, wie sein echter Benutzer es treffen wird:

  1. Kopieren Sie es in einen anderen Ordner und führen Sie es per Doppelklick aus, nicht über Ihr PowerShell-Fenster
  2. Führen Sie es zunächst ohne Administratorrechte aus, auch wenn Sie es für Administratoraufgaben erstellt haben, um den Fehler ehrlich zu erkennen
  3. Achten Sie auf die Antiviren- und SmartScreen-Reaktionen und beheben Sie sie ordnungsgemäß – in diesem Set finden Sie eine ganze Seite dazu
  4. Behalten Sie die Quelle .ps1 bei. Die EXE-Datei ist nur eine Build-Ausgabe; Jede zukünftige Bearbeitung beginnt mit dem Skript
Die beiden ehrlichen Grenzen jedes Skript-zu-EXE-Tools: Die Quelle in der EXE-Datei kann von jedem, der entschlossen genug ist, zurückgelesen werden. Verstecken Sie also niemals ein Passwort in einem konvertierten Skript. und eine neue unsignierte EXE-Datei bringt Antivirensoftware oft in Schwierigkeiten, bis sie einen guten Ruf erlangt oder signiert wird. Für beide Themen gibt es in diesem Set eigene ausführliche Leitfäden.

Sehen Sie sich den vollständigen Vorgang im Video an

Sehen Sie sich die vollständige Konvertierung im Video an – die Modulinstallation, die GUI und die Befehlsrouten sowie die Ausführung der fertigen EXE-Datei.

Watch Full Video
Häufig gestellte Fragen

Muss auf dem Ziel-PC PowerShell installiert sein, um die konvertierte EXE-Datei auszuführen?

Es benötigt die PowerShell-Engine, die in Windows selbst enthalten ist und die Windows 10 und 11 standardmäßig enthält. Der Benutzer installiert nichts und öffnet nie PowerShell – die EXE-Datei startet die Engine im Hintergrund und übergibt ihr Ihr Skript.

Ist die konvertierte EXE-Datei ein echtes kompiliertes Programm?

Nicht im C- oder Cis-Sinn. PS2EXE verpackt Ihren Skripttext verschlüsselt in ein kleines .NET-Hostprogramm. Wenn die EXE-Datei ausgeführt wird, leitet der Host Ihr Skript an die Windows PowerShell-Engine weiter. Das Verhalten ist identisch mit dem Ausführen von .ps1 – die Verpackung ändert sich.

Kann ich ein Skript kostenlos konvertieren oder ist PS2EXE kostenpflichtig?

PS2EXE ist kostenlos. Es handelt sich um ein Community-Modul, das von Markus Scholtes in der PowerShell-Galerie veröffentlicht und mit Install-Module -Name ps2exe installiert wurde. Es gibt kommerzielle Packager, aber für die Standardkonvertierungsaufgabe wird im Video und in dieser Anleitung das kostenlose Modul verwendet.

Diese Anleitung basiert auf dem Technical Anshu PowerShell to EXE-Video – Sie stecken bei irgendeinem Schritt fest? Fragen Sie in den Videokommentaren und Sie erhalten dort eine Antwort.