嗨,我正在编写一个调用AZ迁移api的脚本
$siteuri= 'https://management.azure.com/subscriptions/' + $metadata.compute.subscriptionID +'/resourceGroups/' + $AzMigreateResourceGroup+ '/providers/Microsoft.Migrate/migrateProjects/' + $ProjectName + '/solutions/Servers-Discovery-ServerDiscovery?api-version=2018-09-01-preview'
$siteoutput=(Invoke-RestMethod -Headers $Authtoken -uri $siteuri).properties.details.extendeddetails.applianceNameToSiteIdMapV3我的结果是
[
{
"lab3dev-app01": {
"ApplianceName": "xxx",
"SiteId": "xxx",
"KeyVaultId": "xxx",
"KeyVaultUrl": "xxx",
"ApplianceDetails": {
"machineID": "xxx",
"IPAddress": "192.168.50.210",
"HostName": "WIN-ETP6NTN8B65",
"isRegistered": true,
"discoveryStatus": "Success",
"deepDiscoveryDisabled": false
},
"CertificateContents": {
"xxx": ""
},
"AadAppDetails": {
"TenantID": "xxx",
"AppName": "xxx",
"AppID": "xxx",
"ObjectID": "xxx"
},
"ScaleOutList": null,
"isV2Site": false
}
},
{
"l3devhyper01": {
"ApplianceName": "xxx",
"SiteId": "xxx",
"KeyVaultId": "xxx",
"KeyVaultUrl": "xxx",
"ApplianceDetails": {
"machineID": "xxx",
"IPAddress": "192.168.50.143",
"HostName": "WIN-PKKCDSLE6OD",
"isRegistered": true,
"discoveryStatus": "Success",
"deepDiscoveryDisabled": false
},
"CertificateContents": {
"l3devhyper017a74agentauthcertv2": ""
},
"AadAppDetails": {
"TenantID": "xxx",
"AppName": "xxx",
"AppID": "xxx",
"ObjectID": "xxx"
},
"ScaleOutList": null,
"isV2Site": false
}
}
]我希望这是一个数组类型,所以我可以进行一些搜索,但是gettype()告诉我这是一个字符串吗?
是否以数组(而不是字符串)的形式输出?
发布于 2021-11-24 07:03:22
调用-RestMethod方法确实返回了一个对象,甚至可以使用它访问特定的属性。当API描述仅仅是字符串属性时(情况可能是这样),您就需要查看它。
正如您从该字符串中看到的那样,它是一个JSON对象,可以使用转换自Json将其转换为一个对象。
如果没有额外的错误处理,最简单的情况是:
$siteoutput = Invoke-RestMethod -Headers $Authtoken -uri $siteuri
$siteoutput = $siteoutput.properties.details.extendeddetails.applianceNameToSiteIdMapV3 | ConvertFrom-Jsonhttps://stackoverflow.com/questions/70091057
复制相似问题