You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell调用Azure Migrate API返回字符串而非数组如何处理

解决方法

Azure Migrate API返回的applianceNameToSiteIdMapV3字段本身为序列化后的JSON字符串,需要手动反序列化为PowerShell对象数组,直接使用内置的ConvertFrom-Json cmdlet即可。

修改后的完整代码:

$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
# 新增以下行完成JSON字符串到数组的转换
$siteoutputArray = $siteoutput | ConvertFrom-Json

转换后数组的常用操作示例:

  1. 按索引访问指定设备:
# 访问第一个设备的信息
$firstAppliance = $siteoutputArray[0]
  1. 遍历所有设备提取信息:
foreach ($entry in $siteoutputArray) {
    $deviceTag = $entry.PSObject.Properties.Name
    $deviceDetail = $entry.PSObject.Properties.Value
    Write-Host "标识:$deviceTag,IP地址:$($deviceDetail.ApplianceDetails.IPAddress),注册状态:$($deviceDetail.ApplianceDetails.isRegistered)"
}
  1. 筛选符合条件的设备:
# 筛选IP为192.168.50.143的设备
$targetDevice = $siteoutputArray | Where-Object {
    $_.PSObject.Properties.Value.ApplianceDetails.IPAddress -eq '192.168.50.143'
}

内容的提问来源于stack exchange,提问作者Roger Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:15:05