So führen Sie Anweisungen aus, als ob sie innerhalb eines Powershell-REPL ausgeführt würden

So führen Sie Anweisungen aus, als ob sie innerhalb eines Powershell-REPL ausgeführt würden

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 powershellmit {}der Scriptblock-Syntax wie folgt:

powershell -Command {gci "C:\Program Files"}
gci C:\Program Files

Es scheint, dass cmdDolmetscherisst ab doppelte Anführungszeichen. Daher müssen SieFluchtdas Leerzeichen innerhalb der C:\Program FilesZeichenfolge, 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

verwandte Informationen