Ich versuche, eine EXE-Datei mit einem PowerShell-Skript auszuführen. Wenn ich die Befehlszeile verwende, funktioniert dies problemlos (zuerst gebe ich den Namen der ausführbaren Datei und eine Reihe von Parametern an, um sie aufzurufen):
"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode
Wenn Sie jedoch genau dasselbe in einem Skript tun, wird ein Fehler zurückgegeben:
Der Begriff "C: \ Programme \ Automatisierte Qualitätssicherung \ TestExecute 8 \ Bin \ TestExecute.exe" C: \ temp \ TestProject1 \ TestProject1.pjs / run / exit / SilentMode ' wird nicht als Name einer Cmdlet-Funktion erkannt , Skriptdatei oder bedienbares Programm. Überprüfen Sie die Schreibweise des Namens. Wenn ein Pfad enthalten war, überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut.
(Ich habe den Befehl mit dem Operator "&" aufgerufen.)
Wie kann ich dieses Problem beheben?
Antworten:
oder
UPDATE: Entschuldigung, ich habe den Satz "(Ich habe den Befehl mit dem Operator" & "aufgerufen)" verpasst. Ich hatte dieses Problem, als ich den Pfad dynamisch auswertete. Versuchen Sie die Invoke-Expression-Konstruktion:
quelle
Es sieht so aus, als würden Sie sowohl die EXE-Datei als auch das erste Argument in einer einzelnen Zeichenfolge angeben, z.
'"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'
. Das wird nicht funktionieren. Im Allgemeinen rufen Sie einen nativen Befehl auf, dessen Pfad ein Leerzeichen enthält:Es wird
&
erwartet, dass eine Zeichenfolge folgt, die einen Befehl identifiziert: Cmdlet, Funktion, nativer exer relativer oder absoluter Pfad.Sobald Sie genau das zum Laufen gebracht haben:
Beginnen Sie bei Bedarf mit dem Zitieren der Argumente. Obwohl es so aussieht, als ob Ihre Argumente in Ordnung sein sollten (keine Leerzeichen, keine anderen von PowerShell interpretierten Sonderzeichen).
quelle
.\foo.exe
und auch einen relativen Pfad..\..\foo.exe
und einen relativen Pfad mit Leerzeichen verwenden& '..\..\path with spaces\foo.exe'
.cmd /c "C:\temp\strarc.exe -cjd:M:\ | C:\temp\strarc.exe -s:8 -xd:N:\"
.CD in der Powershell an den Speicherort der EXE-Datei. Beispielsweise:
CD C: \ Benutzer \ Administratoren \ Downloads
PS C: \ Benutzer \ Administratoren \ Downloads> & '. \ Aaa.exe'
Das Installationsprogramm wird angezeigt und folgt den Anweisungen auf dem Bildschirm.
quelle
Demo:
quelle
Da ich kein Entwickler bin, habe ich eine Lösung gefunden, indem ich mehrere ps-Befehle in einer Zeile ausgeführt habe. Z.B:
Durch Platzieren eines "(doppelten Anführungszeichens) vor dem & (kaufmännisches Und) wird die ausführbare Datei ausgeführt. In keinem der Beispiele, die ich gefunden habe, wurde dies erwähnt. Ohne die doppelten Anführungszeichen wird die Eingabeaufforderung ps geöffnet und wartet auf die Eingabe.
quelle