Adi*_*ilZ 1 powershell parsing split
我在解析 REST API 的输出时遇到了麻烦。它是一个多行字符串
Policy Name: Default_US_MultiSite Id: abc1234abc123 Buckets: support_us1_multisite,ch1ny2
Policy Name: Default_CH Id: 123456789acdef Buckets: question,answer,ch2,ch1,drive.me.closer
Policy Name: Default_NY Id: qrstuvwxyz9876 Buckets: demo,bucket1,test1,test,ny0,nyhello,goodbye,new.shoes,pizza,cutecats,theinternetisfor,Halloween,For-the-emperor
Run Code Online (Sandbox Code Playgroud)
现在我确实知道如何按行分割它,我尝试使用以下代码
$data.Split("`n")
Run Code Online (Sandbox Code Playgroud)
但我仍然不知道下一步如何解析这个
它不将策略名称、存储桶、ID 识别为单独的对象
我是否将其转换为 json 或 xml 或将其分配为 json 或 xml 或使用不仅仅是 Convertto-xml 或 [xml] 前缀 $data 的东西?
谢谢
例子:
$data = @"
Policy Name: Default_US_MultiSite Id: abc1234abc123 Buckets: support_us1_multisite,ch1ny2
Policy Name: Default_CH Id: 123456789acdef Buckets: question,answer,ch2,ch1,drive.me.closer
Policy Name: Default_NY Id: qrstuvwxyz9876 Buckets: demo,bucket1,test1,test,ny0,nyhello,goodbye,new.shoes,pizza,cutecats,theinternetisfor,Halloween,For-the-emperor
"@
$data -split "`n" |
Select-String 'Policy Name: (\w+) Id: (\w+) Buckets: (.+)' |
ForEach-Object {
New-Object PSObject -Property ([Ordered] @{
"PolicyName" = $_.Matches[0].Groups[1].Value
"Id" = $_.Matches[0].Groups[2].Value
"Buckets" = $_.Matches[0].Groups[3].Value
})
}
Run Code Online (Sandbox Code Playgroud)
Select-String输出MatchInfo对象。您可以从中提取匹配组。New-Object根据从每个输出字符串中提取的匹配项输出一个新对象。