PowerShell如何从嵌套的REST API JSON结果中提取指定字段
PowerShell如何从嵌套的REST API JSON结果中提取指定字段
嗨,我完全懂你碰到的问题啦!你之所以用$json | Select-Object VirtualMachineName得到空白结果,是因为目标字段VirtualMachineName并不是直接在JSON的顶层对象里,而是嵌套在VirtualMachines这个数组属性里面的。
先拆解下你的JSON结构:顶层对象里的VirtualMachines是一个数组(就是带[]的部分),数组里的每一个元素才是包含VirtualMachineName的虚拟机对象。直接在顶层对象上找VirtualMachineName,自然找不到对应的属性,结果就会是空的!
给你两个简单好用的解决方法:
方法1:先定位数组再选择字段
先访问VirtualMachines数组,再对数组内的对象使用Select-Object:
$json.VirtualMachines | Select-Object VirtualMachineName
运行这个命令后,就能得到你想要的结果:
VirtualMachineName : xxxxxxxxxxx
方法2:直接提取字段值(适配单/多虚拟机场景)
如果只需要拿到虚拟机名称的具体值,不需要属性表头,可以直接访问数组内的字段:
$json.VirtualMachines.VirtualMachineName
如果API返回的数组里有多个虚拟机,这个命令会返回所有名称组成的数组,处理批量场景特别方便。
额外提个小建议:如果你的REST API有可能返回空的VirtualMachines数组,建议先做个非空判断(比如if ($json.VirtualMachines) { ... }),避免后续操作出现报错哦~
备注:内容来源于stack exchange,提问作者Bhupesh Gautam
相关产品推荐
相关产品推荐

