Von der PowerShell-Eingabeaufforderung aus:
\Windows\system32\mspaint.exe
wird Paint ausführen. So wird
Invoke-Expression -command "\Windows\system32\mspaint.exe"
aber wenn ein Leerzeichen im Pfad ist, spuckt PowerShell den Dummy aus, z. B.
Invoke-Expression -command "\install\sub directory\test.bat"
Welche beschwert sich:
The term '\install\sub' is not recognized as the name of a cmdlet, function, script file, or operable program.
Was vermisse ich?
Antwort1
EntsprechendDasArtikel auf Technet, ist es nicht ausreichend, den Pfad in Anführungszeichen zu setzen.
Der Pfad, den Sie verwenden möchten, muss eineund(Et-Zeichen) vor dem Verzeichnis, sonst funktioniert es nicht.
Zum Beispiel:
Invoke-Expression -command & "\install\sub directory\test.bat"
Antwort2
Der einfachste Weg besteht darin, den Invoke-Operator zu verwenden:
&'String containing the path'
Beachten Sie, dass dies zum Starten einer ausführbaren Datei eigentlich das falsche Cmdlet ist . Invoke-Expression
Verwenden Sie besser .Start-Process