嗨,我正在撰寫一個腳本來呼叫 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() 告訴我這是一個字串?
無論如何將其輸出為陣列而不是字串?
uj5u.com熱心網友回復:
Invoke-RestMethod確實回傳一個物件,您甚至可以使用它來訪問特定屬性。您需要查看 API 描述以了解它何時只是一個字串屬性(可能就是這種情況)。
正如您從該字串中看到的那樣,它是一個 JSON 物件,您可以使用ConvertFrom-Json將其轉換為一個物件。
沒有額外錯誤處理的最簡單的情況是:
$siteoutput = Invoke-RestMethod -Headers $Authtoken -uri $siteuri
$siteoutput = $siteoutput.properties.details.extendeddetails.applianceNameToSiteIdMapV3 | ConvertFrom-Json
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366193.html
