Wie kann ich meine exe ausführen Via Powershell?

3 Antworten

Da Powershell in Deinem Fall keine Fehlermeldung generiert, scheint Dein Programm zumindest erfolgreich gestartet zu werden (sich jedoch ohne jegliche Meldung selbst zu beenden)

Wenn Du Dein Programm via "Start-Process" ausführst, geschieht dies in einem anderen Fenster. Falls das Programm nicht selbst über Mechanismen verfügt, das betreffende Fenster geöffnet zu halten, schleißt dieses unter Umständen so schnell, dass Du eventuelle (Fehler)Meldungen nicht zu Gesicht bekommst!

Start-Process verwendet man lediglich, wenn das Ergebnis der Programmausführung keinen Einfluss auf das aufrufende Script haben soll. (abgesehen von -Wait)

Soll das aufgerufene Programm innerhalb der Console des laufenden Scripts seine Ausgaben tätigen verwende den &-Aufrufoperator oder .-dotSourcing .

Demo.ps1

$Code = @'
using System;
class TestProg{
    public static void Main(string[] args){
        Console.WriteLine("Hallo Welt");
        Console.WriteLine("...beliebige Taste zum Beenden");
        Console.ReadKey(); //Fenster offen halten
    }
}
'@


$ProgramPath=".\Hallo Welt.exe"
 #unser kleines Beispielprogramm Quick&Dirty compilieren (funktioniert nicht  mit Powershell 6 und  höher!)
Add-Type -typeDefinition $Code  -OutputType ConsoleApplication -OutputAssembly "Hallo Welt.exe" 


#Aufrufen von (nichtsystem)-Programmen in Powershell
 #parallel/entkoppelt zum aufrufenden Powershell-Prozess (eigenes Fenster,Environment, etc.)
Start-Process -FilePath $ProgramPath -wait


 #innerhalb von Powershell in einem untergeordneten (wirkungs)Bereich (childscope)
& $ProgramPath


 #innerhalb von Powershell im aktuellen Scope
. $ProgramPath
pause

...Wer braucht denn VisualStudio um C# zu compilieren?😅


Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Soviel ich weis, führt die Powershell keine .EXE Dateien aus. Dafür ist die Powershell auch nicht gedacht. .EXE Dateien sind allein Lauffähig und benötigen keine Oberfläche, von der aus sie gestartet werden müssen.

In einer Powershell können dagegen .BAT Dateien ausgeführt werden zB die Autoexec.bat

Deine xyz.exe Datei müsste also eine xyz.bat Datei sein. Es reicht aber nicht aus, einfach eine Datei nach xyz.bat umzubenennen.

Erzesel  12.02.2024, 12:22

Wo hast Du denn diesen Quatsch her?

Mit Powershell kann man so ziemlich alles starten/ausführen :

Ab Windows 11 22H2 wurde die Fileassociation  zu .bat entfernt. Windows-Batch -Dateien haben (seit 30 Jahren) die Endung .cmd

..und autoexec.bat starb spätestens mit Windows98

0
naaman  12.02.2024, 12:26
@Erzesel

Windows-Batch -Dateien haben (seit 30 Jahren) die Endung .cmd

Unfug

cmd ist lediglich der Aufruf der Komandozeile

Wird über Windowstaste+R aufgerufen.

Wenn man keine Ahnung hat, sollte man es lassen Unfug zu schreiben.

0
&  "D:\test6\ConvertMenu.exe"

reicht üblicherweise aus. Wenn dein Programm darüber schon nicht startet, schau in die Ereignisanzeige, was dort protokolliert wird.

DANIELdjldqwj 
Fragesteller
 12.02.2024, 08:39

Da passiert leider auch nichts.

0
Erzesel  12.02.2024, 12:30
@DANIELdjldqwj

Wenn Powershell bei einem Aufruf per &-Calloperator /.-dotSourcing keine Fehlermeldung liefert, muss dieser offensichtlich erfolgt sein.

Möglicherweise beendet sich dein Programm lediglich ohne jegliche Meldung von selbst.

0