brexel
Goto Top

Powershell - ps1 in ein exe umwandel mit integrieten Modulen

Guten Aben Miteinander

Ich habe für mich ein kleines Skript geschrieben, welches mehrere Module benötigt.
Diese Module importiere ich im Powershell mit dem Befehl import-Module, dies funktioniert soweit auch.

Ich möchte jetzt das Skript mit allen Zusatzmodulen und Dateien in ein exe umwandel, damit ich nur noch drei Dateien habe: exe, exe.conf, ini, welche ich verteilen muss.
Also die Module sollen danach im exe vorhanden sein.
Ich habe schon Google befragt, dort steht auch einiges wie man eine exe umwandelt, allerdings nie wie man Module einbindet.

Kann Jemand von euch mir weiterhelfen?

Danke für die Hilfe und schönen Abenden

Freundliche Grüsse
Simon Brexel

Content-Key: 316443

Url: https://administrator.de/contentid/316443

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: Kraemer
Kraemer 28.09.2016 um 21:13:23 Uhr
Goto Top
Moin,

ich verstehe solche Fragen einfach nicht. Wenn das dein Ziel gewesen ist, warum hast du es dann nicht gleich richtig umgesetzt?

Zitat von Wikipedia:
Die PowerShell (powershell.exe), zeitweise auch bekannt unter den Codenamen Monad und Microsoft Command Shell (MSH), ist ein Kommandozeileninterpreter von Microsoft.

exemplarisch:

Zitat von Wikipedia:
Visual Basic .NET (Abk. VB.NET) ist eine Programmiersprache, die auf dem Microsoft .NET Framework aufbaut.

Argumente wie das muss doch aber trotzdem irgendwie gehen ziehen hierbei nicht. Das Resultat wird Gefrickel.

Gruß Krämer
Mitglied: Brexel
Brexel 29.09.2016 um 09:21:09 Uhr
Goto Top
Hallo Kraemer

Danke für eine Antwort.

Ich habe am Anfang mit Powershell angefangen da die Anforderungen noch nicht so Gross waren und ich auch von nichts anderem viel Ahnung habe.
Danach sind die Anforderungen gestiegen und ich habe dennoch im Powershell weitergemacht.

Ich habe auch schon gedacht ich hätte es mit Visual Basic machen sollen, allerdings habe ich dies bereits so umgesetzt und ich werde jetzt nicht nochmal eine Woche investieren um meine 1000 Zeilen anzupassen.

Das Resultat muss am Ende nur funktionieren ob es gefrickelt oder poliert ist intressiert mich dabei wenig.

Kannst du mir vielleicht dennoch bitte weiterhelfen?

Freundliche Grüsse
Simon Brexel
Mitglied: 131026
131026 29.09.2016 aktualisiert um 09:27:11 Uhr
Goto Top
Module sind auch nur Powershell-Code, kopier dir die benötigten CMDLets aus den Modul-Codes einfach in dein Skript dann brauchst du die Module nicht mehr. Das meiste lässt sich sowieso ohne irgendwelche Zusätze mit Powershell und den NET Objekten selber machen.

R.
Mitglied: Kraemer
Kraemer 29.09.2016 um 09:36:12 Uhr
Goto Top
Moin,
Zitat von @Brexel:
Kannst du mir vielleicht dennoch bitte weiterhelfen?

nicht wirklich. Die "Lösungen", über die ich bisher gestolpert bin, sind alles samt sog. Wrapper - also nichts anderes wie eine Windows-Verknüpfung mit dem Sourcecode als Startparameter im Exeformat. Heißt also: Im Endeffekt wird dein Script nur in der Powershell ausgeführt. Wenn dein Script also auf irgendwelche Ressourcen zugreift, dann müssen diese auch auf dem Rechner, auf dem die "exe" ausgeführt wird, vorhanden sein.

Gruß Krämer
Mitglied: Brexel
Brexel 30.09.2016 um 10:31:52 Uhr
Goto Top
Hallo Ranger

Danke für deine Antwort.

Es ist leider nicht möglich meine Funktionen mit .NET Objekten umzusetzen.
Daher verwende ich unter anderem das Remotedesktop Modul von Windows, wenn ich dort so in denn Code reinschaue, scheint dies für mich kompliziert und ein "gefrickel" zu werden.
Oder weisst du gerade wie man dies einfach machen kann?

Freundliche Grüsse
Simon Brexel
Mitglied: 131026
131026 30.09.2016 aktualisiert um 10:37:36 Uhr
Goto Top
Es ist leider nicht möglich meine Funktionen mit .NET Objekten umzusetzen.
Doch face-smile Über WMI etc. lässt sich das alles auch abbilden. Du kannst in Powershell auf c# Code direkt kompilieren und nutzen face-wink
Mitglied: Brexel
Brexel 30.09.2016 um 10:34:57 Uhr
Goto Top
Hallo Krämer

Danke für deinen Beitrag.
Solche Umsetzungen habe ich auch schon gefunden und ist bei mir noch als Plan-B im hintergrund.
Ich wollte zuvor aber noch abchecken ob jemand vielleicht eine etwas schöner Lösung kennt.

Ich werde noch bis am Montag warten und dann falls keine andere Lösung bekannt ist, dies so umsetzen.

Danke und Gruss
Simon Brexel
Mitglied: mayho33
mayho33 17.01.2020 um 02:18:23 Uhr
Goto Top
Hi!

In Powershell hast du keine Möglichkeiten das zu machen.

Du kannst aber in Visual Studio ein C# Konsolen-Projekt anlegen und deinen PS-Code dort ausführen:

https://docs.microsoft.com/en-us/powershell/scripting/developer/hosting/ ...

Auf alle benötigten Dll's in C# einen Verweis hinzufügen, deinen PS Code die verwiesenen Dll's verwenden lassen, die Extension Fody ins Projekt hinzufügen und Builden.

Fody wrappt dir alle Dll's in deine Exe. Leider funktioniert das aber nicht bei allen gleich gut.

Grüße!