我有一个问题要问,要移除powershell中Json中的一个对象。我从powershell获取结果,并将其压缩并放入JSON中,如下所示
foreach ($vm in $vms) {
$id = $vm.Config.InstanceUuid
$vmname = $vm.Config.Name
$geturl = "https://$nsxmanager/api/v1/fabric/virtual-machines?external_id=$id&included_fields=tags"
$getrequest = Invoke-RestMethod -Uri $geturl -Authentication Basic -Credential $nsxtcred -Method Get -ContentType "application/json" -SkipCertificateCheck
$getresult = $getrequest.results | ConvertTo-Json -Compress
Write-Host ($getresult)
}
这将获得结果
{"tags":[{"scope":"allow_access","tag":"external"}, {"scope":"test","tag":"text"}]}
{"tags":[{"scope":"allow_access","tag":"external"}]}
{"tags":[{"scope":"allow_access","tag":"external"}]}
{"tags":[{"scope":"allow_access","tag":"external"}]}
{"tags":[{"scope":"allow_access","tag":"external"}]}
{"tags":[{"scope":"allow_access","tag":"external"}]}
{"tags":[{"scope":"allow_access","tag":"external"}]}
我试图从所有这些结果中删除元素{"scope":"allow_access","tag":"external"}。
我不确定如何删除它,我想在这里寻求一些建议,我该怎么做呢?
发布于 2019-12-18 16:43:13
您可以尝试过滤掉这些结果,方法是将您的JSON结果转换为PSCustomObject,在嵌套的Foreach循环中迭代Tags属性,并构建一个不包含您想要过滤的结果的新PSCustomObject:
$getresult = $getresult | ConvertFrom-Json
$FilteredTagsArr = @()
Foreach($Tag in $GetResult.Tags){
If($Tag.scope -eq 'allow_access' -and $Tag.tag -eq "external"){
#Do Nothing
}Else{
$NewObj = [PSCustomObject]@{
Tag = $tag.tag
Scope = $tag.scope
}
$FilteredTagsArr += $NewObj
}
}
$GetResult.Tags = $FilteredTagsArr
Return $GetResult | ConvertTo-Json
https://stackoverflow.com/questions/59394537
复制相似问题