请参阅下面的powershell代码,我目前正在使用。
$ZscalerURL = "https://ips.zscalertwo.net/cenr/json"
$r = (Invoke-RestMethod -Uri $ZscalerURL).'zscalertwo.net'
$results = New-Object PSObject
$r.parameters.psobject.Properties.Name |
ForEach{
Add-Member -InputObject $results -NotePropertyName $_ -NotePropertyValue $r.parameters.$_.Value
}我无法使用此方法和其他一些方法将json转换成可读的格式,例如,我不能引用$r.continent.city。
已经尝试过使用调用-webrequest的从json转换,并使用使用foreach循环的hacky方法,例如$americas=foreach ($name在$r.‘大洲:美洲’){$name}
发布于 2020-09-23 04:24:46
目前还不清楚您的预期输出是什么。但是,您可以通过循环遍历所有的大陆属性和城市属性来执行类似的操作。然后将这些大陆和城市的名称传递给网络地址对象。
$ZscalerURL = "https://ips.zscalertwo.net/cenr/json"
$r = (Invoke-RestMethod -Uri $ZscalerURL).'zscalertwo.net'
foreach ($continent in $r.psobject.properties.name) {
foreach ($city in $r.$continent.psobject.properties.name) {
$r.$continent.$city |
Select-Object @{n='Continent';e={($continent -split ':')[-1].Trim()}},@{n='City';e={($city -split ':')[-1].Trim()}},*
}
}如果您想在没有操作的情况下列出大陆和城市的属性,您可以不使用-split方法。rest方法响应以continent : <continent name>的形式提供欧陆属性值。同样,城市属性值是city : <city name>。-split方法去掉了continent :和city :前缀。如果不进行操作,可以使用以下语法作为示例检索特定城市的网络地址信息:
$r.'continent : emea'.'city : amsterdam'https://stackoverflow.com/questions/64020279
复制相似问题