我是PowerShell的新手我正试图弄清楚如何在PowerShell中迭代JSON对象并提取值。
我在文件WIMS.JSON中有一个JSON对象
{ WIMS:{
A:{drive:"A"},
B:{drive:"Z"}
}}
我想迭代WIMS中的对象,即A和B,并在循环中选择不同的驱动器号。
我已经能够找出如何使用
获取对象名称(可能很难看)$json = (Get-Content "WIMS.json" -Raw) | ConvertFrom-Json
$WIMS = $json.WIMS
$wimNames=$($WIMS| Get-Member -MemberType *Property).Name
for ($i=0; $i -lt $wimNames.count; $i++) {
write-host ("Property names are: " + $wimNames[$i])
$object=$WIMS| select $wimNames[$i] #does not work
$object.drive #does not work
}
但是我无法弄清楚如何提取对象以便我可以访问这些字段。
任何指针都会受到赞赏。
答案 0 :(得分:1)
你正走在正确的轨道上。将Select-Object
与-Expand
参数一起使用可以获得您想要的效果。
$wimNames | ForEach-Object {
$object = $WIMS | Select-Object -Expand $_
$object.drive
}
或
$wimNames | ForEach-Object { $WIMS | Select-Object -Expand $_ | ForEach-Object { $_.drive } }
答案 1 :(得分:1)
有一个内置的cmdlet convert-fromjson
$js = @"
{ WIMS:{
A:{drive:"A"},
B:{drive:"Z"}
}}
"@
$jsobj = $js | ConvertFrom-Json
$jsobj.WIMS.A