You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中含连字符的ConvertFrom-Json路径如何正确调用?

解决PowerShell中访问带连字符的JSON属性问题

你遇到的问题是PowerShell解析属性名时,把连字符-当成了减法运算符,导致无法正确识别带连字符的属性名。在PowerShell中,当属性名包含连字符、空格或其他特殊字符时,不能直接用点号.访问,需要改用方括号+引号包裹属性名的方式来访问。

修正后的代码

把所有带连字符的属性名用["属性名"]替代点号访问,你的代码可以修改成这样:

$variable = ((Invoke-WebRequest "$OctopusURL/api/tenants/$TenantID/variables" -Headers $header).Content | ConvertFrom-Json).ProjectVariables["Projects-246"].variables["Environments-101"]["f7866b87-e194-4a90-adbe-a4eae705ef86"]

关键说明

  1. 属性访问方式的区别:

    • 常规属性(比如ProjectVariables)可以继续用点号.访问;
    • 带连字符的属性(比如Projects-246、Environments-101)必须用["属性名"]的形式,这样PowerShell会把引号内的内容当作完整的属性名解析,而不会把连字符当成运算符。
  2. 额外小提示:
    你原代码里的$OctopusURL//api多了一个斜杠,建议改成$OctopusURL/api,避免可能的URL请求错误。

简单示例验证

假设你有一段带连字符属性的JSON:

{
  "ProjectVariables": {
    "Projects-246": {
      "variables": {
        "Environments-101": {
          "f7866b87-e194-4a90-adbe-a4eae705ef86": "目标值"
        }
      }
    }
  }
}

用修正后的方式就能正确提取到"目标值",而不会出现语法错误。

内容的提问来源于stack exchange,提问作者Vasyl Stepulo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:19:48