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

如何在PowerShell中解析Terraform输出的非标准类JSON结构

解析方法

方法1:原生表达式解析(最便捷)

你拿到的@{key=value; ...}结构本身就是PowerShell原生的哈希表字面量格式,输入来源可控的场景下直接执行表达式即可得到结构化对象:

# 假设原始参数字符串存储在$rawParam变量中
$parameters = Invoke-Expression $rawParam
# 调用示例:$parameters.x 即可获取对应值value1

注意:仅在输入来源可信(此处为Terraform传入的固定参数)时使用该方法,避免不可信输入带来的注入风险。

方法2:转标准JSON解析(更安全)

如果需要规避表达式执行风险,可以通过字符串替换将其转为标准JSON格式后解析:

$rawParam = '@{x=value1; y=value2; z=value3}'
# 按规则替换为标准JSON格式
$jsonContent = $rawParam `
  -replace '^@\{', '{' `
  -replace '(\w+)=([^;}]+)', '"$1":"$2"' `
  -replace ';', ','
$parameters = ConvertFrom-Json $jsonContent

跨平台兼容根因修复

你遇到的Windows运行正常、Linux异常的问题,本质是没有遵循Terraform external数据源的参数读取规范。Terraform的external数据源会将query参数序列化为JSON传入程序的标准输入,而非命令行参数,使用如下写法可实现跨平台兼容,无需额外解析特殊格式:

# 从标准输入读取Terraform传入的原生JSON参数
$rawInput = [Console]::In.ReadToEnd()
$parameters = ConvertFrom-Json $rawInput

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:24:02