在Powershell中解析YAML文件

在Powershell中解析YAML文件,powershell,yaml,powershell-3.0,apiconnect,Powershell,Yaml,Powershell 3.0,Apiconnect,我想在PowerShell文件中解析来自IBM API Connect的YAML文件。我无法放置第三方软件包或DLL,因为安全审查不同意 --- 产品:“1.0.0” 信息: 名称:“api2product” 标题:“API2product” 版本:“1.0.0” 能见度: 视图: 已启用:true 类型:“公共” 标签:[] 组织:[] 订阅: 已启用:true 类型:“已验证” 标签:[] 组织:[] API: api1: $ref:“api1_1.0.0.yaml” api2: $ref:

我想在PowerShell文件中解析来自IBM API Connect的YAML文件。我无法放置第三方软件包或DLL,因为安全审查不同意

---
产品:“1.0.0”
信息:
名称:“api2product”
标题:“API2product”
版本:“1.0.0”
能见度:
视图:
已启用:true
类型:“公共”
标签:[]
组织:[]
订阅:
已启用:true
类型:“已验证”
标签:[]
组织:[]
API:
api1:
$ref:“api1_1.0.0.yaml”
api2:
$ref:“api2_1.0.0.yaml”
api3:
$ref:“api3_1.0.0.yaml”
api4:
$ref:“api4_1.0.0.yaml”
api5:
$ref:“api5_1.0.0.yaml”
计划:
违约:
标题:“默认计划”
说明:“默认计划”
批准:错误
利率限额:
硬限制:错误
值:“100/小时”
我只想获得与之相关联的API YAML文件,为此我在谷歌上搜索并开发了一个实际运行的示例PowerShell代码

$text=Get Content-Path“C:\Users\abhi\Desktop\projects\TRYG\GitLab\APIPOC\test.yaml”
$regex='(?ms)API:(.+?)计划:'
$text=$text-连接“`n”
$OutputText=[regex]::匹配($text,$regex)|
foreach{$\.Groups[1].Value-split$regex}
$OutputText=$OutputText.Replace(“`$ref:”,“”)
$OutputText=$OutputText.Replace(“:”,“=”)
$OUTPUTEXT=$OUTPUTEXT.Replace(“=`n”,“=”)
$OutputText=$OutputText.Replace(“`”“”)
$AppProps=CONVERTFORM StringData($OUTPUTEXT)
$AppProps.GetEnumerator()| ForEach对象{$\.Value}
[string[]$l_数组=$AppProps.Values | Out string-Stream

有什么简单的方法可以代替字符串中的多次替换来实现这一点吗?

YAML是一种分层格式,而
ConvertFrom StringData
将简单的键/值对列表处理为哈希表。您能以JSON格式而不是YAML格式获取输入数据吗?PowerShell为前者提供了一个解析器。基于his-您可以轻松地将YAML文件转换为JSON,并使用PowerShell的内置解析器。
python-c'导入sys,YAML,JSON;JSON.dump(YAML.load(sys.stdin),sys.stdout,indent=4)“file.json
您需要安装PyYAML,但这应该可以工作。@AnsgarWiechers我无法控制输入数据的格式。它将仅以yaml格式提供。我有几十个yaml文件要处理。为什么您可以安装Python和Python模块,但不能安装PowerShell模块?这没有意义。如果有业务需要,请如果你的安全团队阻止了这一点,那么你的问题就不是技术问题。