从PowerShell中的某个属性/键的集合中获取值

时间:2017-05-11 10:18:41

标签: json powershell

我使用以下代码段从文件中检索了JSON:

$thisJSON = (Get-Content $fullFilePath -Raw) | ConvertFrom-Json

现在json看起来像这样:

{
   "Name" : "Fred",
   "Age" : 10
}

我希望通过它循环并获取密钥和值。我认为这样可行:

 Foreach($key in $myCollection){        
        $value = $myCollection[$key]
        Write-Host "Key : " $key
        Write-Host "Value : " $value 
    }

它似乎只循环一次,当它应该循环两次,因为我得到的输出是:

Key : @{Name=Fred; Age=10}
Value : 

因此无法找到该值,并且该键返回整个集合。我在网上搜索过,我一定做错了。

我的想法是我可能需要在从文件中读取后转换为对象或其他东西,但我不确定。

1 个答案:

答案 0 :(得分:3)

如果要迭代属性,可以通过访问PsObject属性来选择所有键(名称):

$thisJSON.PsObject.Properties |
     Select-Object -ExpandProperty Name |
     ForEach-Object {
        Write-Host "Key : " $_
        Write-Host "Value : " $thisJSON."$_"
     }

<强>输出:

Key :  Name
Value :  Fred
Key :  Age
Value :  10