我有一个如下所示的JSON文件:
$jsondata = '{
"ips": {
"10.20.30.40": [
{
"rhost": "DNS Name1.",
"rdata": [
"10.20.30.40"
],
"rrtype": "A (1)",
"ttl": 86400,
"geo": null,
"source": "DNSProvider1"
}
],
"40.50.60.70": [
{
"rhost": "DNS Name2.",
"rdata": [
"40.50.60.70"
],
"rrtype": "A (1)",
"ttl": 86400,
"geo": null,
"source": "DNSProvider1"
}
]
}
}'
我想获取列表中每个IP地址的所有TTL(例如)。
我将此JSON转换为Powershell PSCustomObject:
$obj = $jsondata | convertFrom-Json
现在我想获得所有TTL,我试图获取IP列表(作为开始):
foreach ($ip in $a.ips) {write-host $ip }
我没有得到字符串,这就是为什么我(可能)不能进入并获得TTL的原因。
所以我的问题是:如何将所有IP作为字符串?
我相信,一旦我得到了答案,我就会明白如何查看列表中的所有IP。
谢谢!
答案 0 :(得分:2)
foreach($ip in $obj.ips | Get-Member -MemberType NoteProperty)
{
Write-Host -Verbose ("IP Address {0} has TTL {1}" -f $ip.Name, $obj.ips."$($ip.Name)".ttl)
}
Get-Member
将获取属性的名称(即IP地址),而不是值。
答案 1 :(得分:1)
谢谢Rubanov,这确实有帮助!
只是为了记录整个答案:
foreach($ip in $obj.ips | Get-Member -MemberType NoteProperty)
{
Write-Host -Verbose $obj.ips.$($ip.Name).ttl
}
或者:
($obj.ips | Get-Member -MemberType NoteProperty).Name | % {$obj.ips.$_.ttl}