我需要创建一个脚本来自动化一些过程 但我有一个问题 当我在 .ps1 中使用命令时
New-Item -Path $env:userprofile\Desktop\Cloack -Name "test.json" -ItemType "file" -Value "{ \`"a\`":b, \`n \`"b\`":c, etc .}"
然后所有内容都按预期写入变量
{ "a": b,
"b":c, etc .}
但是文件 .bat 可以做到:
powershell New-Item -Path $env:userprofile\Desktop\Cloack -Name "test.json" -ItemType "file" -Value "{ `"a`":b, `n `"b`":c, etc .}"
我得到的结果是
`a`: b,
`b`:c
etc .
我希望在执行 "
文件时正确输入字符
{
和 .bat
就像剧本里那样
根据您的预期输出(从 PowerShell 内部执行时与 PowerShell 命令不匹配)判断,您正在寻找类似以下内容:
:: From a batch file
powershell -c "New-Item -Path $env:userprofile\Desktop\Cloack -Name test.json -Value \"{ `\"a`\":b, `n `\"b`\":c, etc .}\""
-c
(-Command
) 是默认目标的 PowerShell CLI 参数,但为了概念清晰而包含在此处。
整个命令包含在
"..."
中,为了稳健性,防止 cmd.exe
对部分命令进行潜在不需要的预先解释
无论您总体上是否使用
"..."
,作为要执行的命令的一部分,应该通过传递到 PowerShell 的
"
字符必须是 转义,如 \"
; PowerShell CLI 假定未转义
"
具有语法功能仅在命令行上,因此删除它们。
\"{ `\"a`\":b, `n `\"b`\":c, etc .}\"
内的
"..."
部分最终被看到并评估如下,我认为这就是你想要的:
"{ `"a`":b, `n `"b`":c, etc .}"