如何将 json 对象添加到参数中
How to add json object to arguments
我正在尝试使用 cmd 将 json 对象添加到我的 powershell 脚本中。我的问题是,我收到了字符串但没有任何引号。
我的脚本。ps1:
Write-Host ($args[0] | Format-Table | Out-String)
我的命令行:
C:\path\to\powershell.exe ./script.ps1 '{"key1":"val1","all":[{"key2":"val2","key3":"val3","key4":["val5","val6"]},{"key5":"val7","key6":"val8","key7":["val9","val10"]}],"key8":0}'
结果:
{key1:val1,all:[{key2:val2,key3:val3,key4:[val5,val6]},{key5:val7,key6:val8,key7:[val9,val10]}],key8:0}
如何让我的 json 带引号?
当使用 PowerShell 的 CLI 时,unescaped "
在命令行上是在命令行解析期间删除,只有然后是解释为要执行的PowerShell代码的结果(由于(暗示) 使用 -Command
/ -c
参数).[1]
你有两个选项:
正如 Compo 在他的评论中指出和演示的那样, 转义了所有 "
个字符。因为 \"
会起作用 - 转义确保它们以未转义的形式 保留 ,因此成为要执行的 PowerShell 代码的一部分。
如果您想避免转义,请通过管道[=]提供文本 57=](标准输入):
echo {"key1":"val1","all":[{"key2":"val2","key3":"val3","key4":["val5","val6"]},{"key5":"val7","key6":"val8","key7":["val9","val10"]}],"key8":0}| powershell.exe -c ./script.ps1 $input
请注意 |
之前没有 space,否则 space 将成为输入的一部分。
在 PowerShell 命令中,通过 automatic $input
variable
访问管道输入的文本
[1] 正是出于这个原因,外部 '...'
引用 而不是 保护其中未转义的 "
:在命令行的初始解析期间,'
个字符具有 没有 句法含义。
我正在尝试使用 cmd 将 json 对象添加到我的 powershell 脚本中。我的问题是,我收到了字符串但没有任何引号。
我的脚本。ps1:
Write-Host ($args[0] | Format-Table | Out-String)
我的命令行:
C:\path\to\powershell.exe ./script.ps1 '{"key1":"val1","all":[{"key2":"val2","key3":"val3","key4":["val5","val6"]},{"key5":"val7","key6":"val8","key7":["val9","val10"]}],"key8":0}'
结果:
{key1:val1,all:[{key2:val2,key3:val3,key4:[val5,val6]},{key5:val7,key6:val8,key7:[val9,val10]}],key8:0}
如何让我的 json 带引号?
当使用 PowerShell 的 CLI 时,unescaped "
在命令行上是在命令行解析期间删除,只有然后是解释为要执行的PowerShell代码的结果(由于(暗示) 使用 -Command
/ -c
参数).[1]
你有两个选项:
正如 Compo 在他的评论中指出和演示的那样, 转义了所有
"
个字符。因为\"
会起作用 - 转义确保它们以未转义的形式 保留 ,因此成为要执行的 PowerShell 代码的一部分。如果您想避免转义,请通过管道[=]提供文本 57=](标准输入):
echo {"key1":"val1","all":[{"key2":"val2","key3":"val3","key4":["val5","val6"]},{"key5":"val7","key6":"val8","key7":["val9","val10"]}],"key8":0}| powershell.exe -c ./script.ps1 $input
请注意 |
之前没有 space,否则 space 将成为输入的一部分。
在 PowerShell 命令中,通过 automatic $input
variable
[1] 正是出于这个原因,外部 '...'
引用 而不是 保护其中未转义的 "
:在命令行的初始解析期间,'
个字符具有 没有 句法含义。