Wie kann ich meine exe ausführen Via Powershell?
Hallo, ich habe ein Programm geschrieben, was Dateien in andere Formate formatieren kann. Jetzt würde ich es gerne mit Powershell starten, aber es passiert einfach nichts. wenn ich aber die Exe ausführe funktioniert alles.
Diesen Pfad benutze ich:
$executablePath = 'D:\test6\ConvertMenu.exe'
# Starte das C#-Projekt
Start-Process -FilePath $executablePath -Wait
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?😅
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.
Da hängt sich aber jemand gewaltig aus dem Fenster.
Schau Dir mal meine "Spielwiese" an: https://www.gutefrage.net/home/thema/batch-trick/neue
In Sachen Batch und Powershell, solltest Du Dich ganz gewiss nicht versuchen mit mir zu messen!
& "D:\test6\ConvertMenu.exe"
reicht üblicherweise aus. Wenn dein Programm darüber schon nicht startet, schau in die Ereignisanzeige, was dort protokolliert wird.
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.
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