
Im Grunde möchte ich Befehle übergeben <command>
, als ob sie innerhalb einer Powershell-Sitzung ausgeführt würden PS >
, um sie aufzurufen vonCreateProcess
powershell -Command <command>
Das oben genannte funktioniert nicht in allen Fällen. Dies funktioniert beispielsweise nicht
powershell -Command gci "C:\Program Files"
Aber das funktioniert
powershell -Command choco -v
Antwort1
Überprüfen Sie den effektiven übergebenen Befehl powershell
mit {}
der Scriptblock-Syntax wie folgt:
powershell -Command {gci "C:\Program Files"}
gci C:\Program Files
Es scheint, dass cmd
Dolmetscherisst ab doppelte Anführungszeichen. Daher müssen SieFluchtdas Leerzeichen innerhalb der C:\Program Files
Zeichenfolge, beispielsweise wie folgt:
powershell -Command gci "C:\Program` Files" # using backtick
oder mit Anführungszeichen (jede der folgenden Befehlszeilen sollte funktionieren):
powershell -Command gci """C:\Program Files""" # inner double quotes
powershell -Command gci "'C:\Program Files'" # inner single quotes
powershell -Command gci 'C:\Program Files' # single quotes