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

使用Python SDK for Azure如何获取虚拟机创建日期与时间?

解决方案

你当前用计算客户端拉取VM列表的接口,返回的是计算服务维度的VM配置信息,默认不包含资源创建时间字段——这个字段属于Azure资源管理器存储的通用资源元数据,不在计算服务的专属返回结构里,所以直接打印VM对象找不到对应属性。

实现路径

  • 初始化ResourceManagementClient,复用你之前给计算客户端传的凭证、订阅ID即可,不需要额外配置权限(只要你的凭证有VM资源读权限,就能读取对应元数据)
  • 根据你的VM规模选对应实现方式:
    • 批量查询(VM数量多的场景优先选,性能更好):先通过资源客户端按资源类型过滤,一次性拉取所有VM的元数据拿到创建时间,再和已有的VM配置数据关联
    • 单VM查询(VM数量少的场景选,代码改动最小):遍历VM列表时,根据每个VM的资源ID单独拉取元数据读取创建时间

可直接复用的代码示例

from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.resource import ResourceManagementClient

# 复用你已有的凭证、订阅ID参数
compute_client = ComputeManagementClient(credential, Subscription_Id)
resource_client = ResourceManagementClient(credential, Subscription_Id)

# ---------- 可选1:批量查询,性能更优 ----------
# 先拉取所有VM类型的资源元数据,构建ID-创建时间的映射表
vm_resource_list = resource_client.resources.list(
    filter="resourceType eq 'Microsoft.Compute/virtualMachines'"
)
vm_create_time_map = {
    res.id: res.created_time
    for res in vm_resource_list
}

# 拉取VM详情时直接从映射表取创建时间
vm_list = compute_client.virtual_machines.list_all()
for vm in vm_list:
    vm_create_time = vm_create_time_map.get(vm.id)
    print(f"VM名称: {vm.name}, 创建时间(UTC): {vm_create_time}")
    # 此处保留你原有的VM详情处理逻辑


# ---------- 可选2:单VM查询,代码改动最小 ----------
# vm_list = compute_client.virtual_machines.list_all()
# for vm in vm_list:
#     # 通过VM资源ID查询对应元数据
#     vm_resource = resource_client.resources.get_by_id(vm.id, api_version="2023-07-01")
#     print(f"VM名称: {vm.name}, 创建时间(UTC): {vm_resource.created_time}")

注意事项

  • 返回的created_time是UTC时区的datetime对象,需要展示本地时间的话自行做时区转换即可
  • 不要通过活动日志查询VM创建时间:活动日志有固定保留期限,超期的创建记录会被清理,返回结果不准确
  • 这个逻辑对所有Azure资源通用,后续要查磁盘、公共IP、存储账户等其他资源的创建时间,替换对应资源类型过滤条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:09:26