Powershell и путь как аргумент с двойными кавычками - PullRequest
7 голосов
/ 16 февраля 2012

У меня есть простой сценарий PS, который должен принимать параметр, который является путем к каталогу. Я передаю этот путь и запускаю скрипт ps следующим образом:

powershell.exe -ExecutionPolicy Bypass -F "C:\temp\ctest\logging test\postinstall.ps1" "C:\temp\ctest\logging test\"

Я не могу контролировать добавление '\' к пути, являющемуся параметром этого скрипта, и его необходимо заключать в двойные кавычки, чтобы учесть пространство в пути. Итак, в моем скрипте ps есть переменная, которая представляет собой строку:

C:\temp\ctest\logging test"     <<-- error in path!  with the double-quote char. :(

Надеюсь, мой вопрос прост, но я пока не могу найти никого, кто бы его решил. Неужели нет способа заставить powershell не избегать этой последней двойной кавычки в этом сценарии?

Спасибо, что уделили мне время и дали мне образование.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2012

Проблема выглядит только при вызове из CMD.В вашем скрипте вы можете сделать это:

$args[0].TrimEnd('"')

Он удалит завершающую двойную кавычку, если она существует.

Или вы можете удвоить обратную косую черту:

C:\>powershell.exe -f C:\echo.ps1 "C:\temp\ctest\logging test\\"

Содержимое echo.ps1

Write-Host ('"{0}"' -f $args[0])
0 голосов
/ 17 февраля 2012

Вы пытались заключить в кавычки аргумент в вашем вызове?

0 голосов
/ 16 февраля 2012

попробуй так:

powershell.exe -ExecutionPolicy Bypass -F 'C:\temp\ctest\logging test\postinstall.ps1' 'C:\temp\ctest\logging test\'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...