powershell - 特殊字符不保存

标签 powershell batch-file escaping

我需要创建一个脚本来自动化一些过程 但我有一个问题 当我在 .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 .}"
    

关于powershell - 特殊字符不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77135461/

相关文章:

powershell - Autodesk Revit 的启动过程等待问题

powershell - 获取内容 powershell commandlet 未返回

command-line - 使用 DOS 命令替换字符串中的一个字符

windows - shutdown.exe 参数是破折号还是斜线?

curl - 在 Yaml 中转义包含引号和撇号的 cURL 命令

powershell - NuGet Packages init.ps1 中的辅助函数是否必须是全局的?

powershell - 从一个 Azure 自动化 Runbook 调用另一个 Azure 自动化 Runbook 时出错

windows - 从批处理文件中重定向输出

Javascript:用双反斜杠替换反斜杠

mysql - Nodejs MySQL : Query-Escaping adds single quotes