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

如何通过vSphere 6.5 Python vCenter API获取VMware虚拟机UUID及解决返回结果缺失identity字段问题

为什么vCenter REST API返回的VM数据中没有identity字段?

我之前也碰到过类似的问题,通常是以下几个原因导致的,你可以逐一排查:

1. 未显式指定fields查询参数

vCenter REST API默认只会返回核心默认字段,identity并不在默认返回列表里。你需要在请求URL中通过fields参数显式要求返回这个字段。

比如修改后的请求URL应该是:

https://{api_host}/rest/vcenter/vm/{vm}?fields=identity

如果需要同时返回其他字段,可以用逗号分隔,比如:

https://{api_host}/rest/vcenter/vm/{vm}?fields=identity,name,status

用Python发起请求的示例代码:

import requests

# 替换为你的实际参数
vm_id = "vm-123"
api_host = "vcenter.example.com"
session_token = "your-auth-token"

url = f"https://{api_host}/rest/vcenter/vm/{vm_id}?fields=identity"
headers = {"Authorization": f"Bearer {session_token}"}

# 注意:生产环境请开启证书验证,不要用verify=False
response = requests.get(url, headers=headers, verify=False)
if response.status_code == 200:
    vm_data = response.json()
    print(vm_data.get('value', {}).get('identity'))
else:
    print(f"请求失败: {response.text}")

2. API版本/ vCenter服务器版本不兼容

identity字段是在较新的vSphere API版本中引入的(比如vSphere 7.0 Update 3及以后)。如果你的vCenter服务器版本比较旧(比如6.7或更早),API响应里根本不会包含这个字段。

你可以登录vCenter Web界面查看服务器版本,再对照官方的API文档确认该版本是否支持identity结构。

3. 账号权限不足

如果你的API认证账号没有足够的权限读取虚拟机的标识信息,vCenter API会自动过滤掉identity这类需要特定权限的字段。

请检查账号是否拥有VirtualMachine.Inventory或VirtualMachine.Read相关的权限,可以在vCenter的权限管理中给账号添加对应的虚拟机读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:14:05