2016-02-23 31 views
2

我是PowerShell的新手我在弄清楚如何遍歷PowerShell中的JSON對象並提取值。在運行時從JSON對象中提取值

我有一個JSON對象在文件WIMS.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 
} 

獲取對象名稱(可能醜陋的),但我無法弄清楚如何提取對象,以便我可以訪問的字段。

任何指針將不勝感激。

回答

1

你正走在正確的軌道上。使用Select-Object-Expand的參數應該可以得到你想要的。

$wimNames | ForEach-Object { 
    $object = $WIMS | Select-Object -Expand $_ 
    $object.drive 
} 

$wimNames | ForEach-Object { $WIMS | Select-Object -Expand $_ | ForEach-Object { $_.drive } } 
+0

正是我在後。謝謝 – StuartNorrisMBA

0

有一個內置的cmdlet的convert-fromjson

$js = @" 

    { WIMS:{ 
     A:{drive:"A"}, 
     B:{drive:"Z"} 
    }} 


    "@ 

    $jsobj = $js | ConvertFrom-Json 
    $jsobj.WIMS.A