Экранирующие параметры для PowerShell VSTS Task - PullRequest
0 голосов
/ 03 октября 2018

Связано (но не отвечает на этот случай): Параметр Powershell для группы задач VSTS

Вопрос: как передать параметр с двойными кавычками и другими потенциально неудобными значениями (например, сочетание одинарныхи двойные кавычки и другие специальные символы)

Я не знаю, какой параметр может быть.Поэтому нужен гарантированный способ избежать произвольного ввода.

Например, при передаче параметра, подобного этому

-ParamName "$(ParamValue)"

И значение, подобное этому:

[ "abc=xyz", "abc=somethingelse" ]

Я получилследующее:

2018-10-03T17:51:53.3159259Z Generating script.
2018-10-03T17:51:53.3257527Z Formatted command: . 'M:\<...>\blah.ps1' -ParamName "[ "abc=xyz", "abc=somethingelse" ]" <...>
2018-10-03T17:51:53.3969661Z ##[command]"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'M:\...\_temp\14d05e56-d7c7-4db9-8007-a29f5b024b51.ps1'"
2018-10-03T17:51:53.7924531Z M:\<...>\blah.ps1 : A 
2018-10-03T17:51:53.7924970Z positional parameter cannot be found that accepts argument 'abc=xyz, abc=somethingelse ]'.

1 Ответ

0 голосов
/ 03 октября 2018

Существует 2 способа решения вашей текущей проблемы, во-первых, просто используйте одинарные кавычки при передаче параметра, например:

-ParamName '$(ParamValue)'

Другой способ - избежатьдвойные кавычки в значении параметра с использованием символа "` "(известный как обратный кавычка, обратная кавычка или серьезный акцент).Таким образом, значение изменяется с:

[ "abc=xyz", "abc=somethingelse" ]

на:

[ &#96;"abc=xyz&#96;", &#96;"abc=somethingelse&#96;" ]

Таким образом, первая двойная кавычка в значении параметра выиграла 'быть интерпретированным как конец строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...