如何在PowerShell中根据名称从AVI API返回的JSON提取UUID到变量
提取AVI虚拟服务UUID到PowerShell变量
假设你已经通过API调用获取到虚拟服务的JSON数据并解析到了$virtualServices变量中,以下是针对固定名称提取UUID的实现逻辑:
核心提取逻辑
直接通过Where-Object过滤虚拟服务名称,提取对应的uuid属性值并存储到变量:
# 提取webapp-vs-sitea的UUID $siteA_VS_UUID = ($virtualServices | Where-Object { $_.name -eq 'webapp-vs-sitea' }).uuid # 提取webapp-vs-siteb的UUID $siteB_VS_UUID = ($virtualServices | Where-Object { $_.name -eq 'webapp-vs-siteb' }).uuid
适配API返回结构的注意点
如果AVI Controller API返回的JSON数据外层包含results数组(这是REST API的常见返回格式),需要调整为针对results数组进行过滤:
# 当数据包含results数组时的提取方式 $siteA_VS_UUID = ($virtualServices.results | Where-Object { $_.name -eq 'webapp-vs-sitea' }).uuid $siteB_VS_UUID = ($virtualServices.results | Where-Object { $_.name -eq 'webapp-vs-siteb' }).uuid
可选:验证提取结果
为避免后续脚本因UUID提取失败出现异常,可添加简单的验证逻辑:
if (-not $siteA_VS_UUID) { Write-Warning "未找到名称为webapp-vs-sitea的虚拟服务记录" } if (-not $siteB_VS_UUID) { Write-Warning "未找到名称为webapp-vs-siteb的虚拟服务记录" }
内容的提问来源于stack exchange,提问作者I-1
相关产品推荐
相关产品推荐

