So führen Sie EXE-Dateien mit PowerShell aus
Das Ausführen einer ausführbaren Datei (.exe) ist per Doppelklick recht einfach. Wenn Sie jedoch Prozesse automatisieren möchten – beispielsweise Skripte zur Installation von Programmen, zum Einrichten von Umgebungen oder zum Ausführen von Wartungsaufgaben erstellen – müssen Sie sich mit der Funktionsweise von Windows PowerShell vertraut machen. Es mag etwas ungewöhnlich erscheinen, aber PowerShell bietet mehrere Möglichkeiten zum Ausführen einer.exe-Datei, und manchmal funktioniert die einfachste Methode je nach Konfiguration oder Speicherort der Datei nicht. Dies kann besonders frustrierend sein, wenn Sie sich intensiv mit Skripten auseinandersetzen oder versuchen, Prozesse ohne Benutzereingriff auszuführen.
Wenn Sie Server oder PCs remote verwalten, kann Ihnen das Wissen, wie man Programme per Skript oder Kommandozeile ausführt, enorm viel Zeit sparen. Ziel ist es, einige zuverlässige und erprobte Methoden kennenzulernen, mit denen Sie die ausführbare Datei problemlos starten können, ohne auf Berechtigungsprobleme oder Pfadfehler zu stoßen. Wenn Sie es richtig machen, führen die PowerShell-Befehle die Datei einfach so aus, als hätten Sie sie per Doppelklick geöffnet. Rechnen Sie mit etwas Ausprobieren, da ungewöhnliche Dinge wie Leerzeichen in Dateinamen oder fehlerhafte Berechtigungen Probleme verursachen können. Aber ja, sobald Sie es verstanden haben, werden Sie sich fragen, warum es anfangs so kompliziert schien. Denn Windows macht es einem manchmal unnötig schwer.
Wie kann man eine EXE-Datei in PowerShell ausführen?
Beim Ausführen einer ausführbaren Datei über PowerShell ist darauf zu achten, dass der Pfad korrekt angegeben und die Syntax korrekt ist. Ersetzen Sie „Dateiname“ oder „Pfad“ durch die tatsächlichen Dateidaten, jedoch ohne < >Klammern – diese dienen lediglich der Strukturierung. Beachten Sie außerdem, dass Befehle möglicherweise auf Leerzeichen in Dateinamen oder Verzeichnissen reagieren. Daher ist es wichtig, Pfade mit Leerzeichen zu versehen.
Direkt ohne Parameter mit dem &-Operator ausführen
Dies ist die gängigste Methode. Das &Symbol (manchmal auch Aufrufoperator genannt) weist PowerShell an: „Hey, führe diese Datei aus.“ Es ist flexibel, da Sie vollständige oder relative Pfade angeben können, und funktioniert für die meisten einfachen Szenarien. So gehen Sie vor:
- Öffnen Sie PowerShell als Administrator – drücken Windows + RSie
powershellStrg + Umschalt + Eingabe.(Dies ist manchmal erforderlich, wenn die Anwendung Administratorrechte benötigt.) - Wenn sich die.exe-Datei im selben Verzeichnis befindet, in dem Sie sich befinden, geben Sie Folgendes ein:
& '.\filename.exe'. Das.\bedeutet „Suche hier“ im aktuellen Ordner. - Wenn es sich an einem anderen Ort befindet und Sie den vollständigen Pfad kennen, geben Sie Folgendes ein:
& 'C:\Path\To\Your\File.exe'. Achten Sie darauf, Pfade in Anführungszeichen zu setzen, wenn sie Leerzeichen enthalten, wie z. B.& 'C:\Program Files\MyApp\app.exe'.
Was passiert hier? Nun, das &signalisiert PowerShell, dass Sie die Datei als Programm ausführen möchten und nicht nur als Zeichenkette. Manchmal passieren dabei seltsame Dinge – auf manchen Systemen ist möglicherweise ein zweiter Versuch oder ein Neustart erforderlich, damit die Änderung vollständig wirksam wird. Ich bin mir nicht sicher, warum, aber es scheint, als ob Windows bei der Skriptausführung immer wieder Schwierigkeiten bereitet.
Verwendung von StartProcess – die Methode für PowerShell-Fortgeschrittene
Start-Process ist wie ein Schweizer Taschenmesser zum Starten von Anwendungen. Es eignet sich hervorragend, wenn Sie mehr Kontrolle wünschen, z. B.warten möchten, bis das Programm beendet ist, bevor Sie fortfahren, oder es mit Administratorrechten ausführen möchten, ohne PowerShell manuell als Administrator zu starten.
Warum das hilft: Mehr Optionen, wie z. B.Warten auf den Abschluss, Übergeben von Argumenten oder Erhöhen der Berechtigungen.
Anwendungsfall: Wenn Ihr Skript warten muss, bis die ausführbare Datei beendet ist, oder wenn es mit bestimmten Berechtigungen ausgeführt werden muss.
Erwartetes Ergebnis: Das Programm startet und die Skripte werden fortgesetzt, sobald es abgeschlossen ist (falls -Waitverwendet).
- Grundlegende Verwendung:
Start-Process -FilePath “C:\Path\To\Program.exe” - Warten auf den Abschluss des Vorgangs:
Start-Process -FilePath “C:\Path\To\Program.exe” -Wait - Als Administrator ausführen:
Start-Process -FilePath “C:\Path\Program.exe” -Verb RunAs
Denken Sie daran: Dies ist nützlich, wenn Sie den Start einer Anwendung automatisieren und sicherstellen möchten, dass sie vollständig abgeschlossen ist, bevor Sie fortfahren. Manchmal ist dies die einzig zuverlässige Methode bei Installationsskripten oder Batch-Aufträgen, die von zuvor abgeschlossenen Schritten abhängen.
Invoke-Expression verwenden – Naja, besser die Finger davon lassen.
Das ist ehrlich gesagt etwas beunruhigend. Microsoft rät von der Verwendung Invoke-Expressionzum Ausführen von ausführbaren Dateien ab, da es anfällig für Script-Injection ist und die Fehlersuche extrem mühsam sein kann.
Wenn Sie sich aber sicher sind, was Sie tun, können Sie mit dem richtigen Befehl eine ausführbare Datei starten. Zum Beispiel so:
Invoke-Expression -Command ".\Path\To\File.exe"
Das funktioniert normalerweise, wenn Sie sich bereits im selben Verzeichnis wie die Datei befinden – in diesem Fall genügt der Dateiname. Befinden Sie sich in einem anderen Verzeichnis, geben Sie den vollständigen Pfad an Invoke-Expression -Command "D:\Folder\File.exe". Aber Vorsicht: Diese Methode kann unzuverlässig oder unsicher sein, wenn Sie Eingaben von anderen entgegennehmen. Vermeiden Sie sie daher unbedingt, es sei denn, Sie sind absolut sicher, dass nichts schiefgehen kann, da Schadcode leicht eingeschleust werden kann.
Manchmal kann diese Methode auf manchen Systemen einen Fehler auslösen oder nicht sofort ausgeführt werden. Das ist etwas seltsam, kommt aber vor. Und nein, Microsoft ist kein großer Befürworter dieser Vorgehensweise mehr, daher sollte sie nur sparsam eingesetzt werden.
&oder ` Start-Processget` zuverlässiger, insbesondere bei der Skripterstellung für Produktionsumgebungen. Die `invoke`-Methode sollte eher als letzte Option oder für schnelle, unsaubere Tests verwendet werden.