Описание
У меня возникли проблемы с правильной передачей строки JSON в команду.Я считаю, что я воссоздал проблему, которую я испытываю в тесте.Строка JSON использует строки в двойных кавычках, которые также содержат двойные кавычки в теле строки.
Проблема:
Когда я вызываю скрипт Powershell напрямую с аргументами,скрипт корректно отображает строку JSON.Когда я вызываю сценарий PowerShell, используя powershell.exe
, строка JSON, по-видимому, удаляется или анализируется таким образом, что удаляются двойные кавычки (что делает строку JSON недопустимой).
Примеры:
# Contents test.ps1 file
echo $args[0]
echo $args[1]
# Back to PowerShell
> $a='bar'
> $b="{`"foo`": `"$a`"}"
> $b
{"foo": "bar"} # <-- Looks correct
Когда я вызываю файл test.ps1 напрямую, выходные данные выглядят так, как я и ожидал:
> .\test.ps1 foo $b
foo
{"foo": "bar"} # <-- Looks correct
Однако, если я перейду на один уровень косвенности дальше ииспользовать powershell.exe
для вызова команды, я не получаю желаемого результата:
> powershell.exe ".\test.ps1 foo $b"
foo
foo: bar # <-- Wrong... The curly brackets have been removed, as if it's been evaled.
> powershell.exe -command ".\test.ps1 foo $b"
foo
foo: bar # <-- Wrong... For the same reasons as the last example
Я пытаюсь определить, как я могу получить команду powershell.exe для вывода полной строки JSON с кавычками.