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

如何通过Azure Python SDK的for循环获取多台VM的已有OS磁盘及多数据磁盘ID

使用Azure Python SDK批量获取虚拟机磁盘ID

前置准备

  • 安装必要的Python包:
    pip install azure-mgmt-compute azure-identity
    
  • 确保本地已配置Azure认证(如az login、环境变量或服务主体)

代码实现

以下示例会遍历指定订阅下所有资源组的虚拟机,提取每台VM的OS磁盘ID和所有数据磁盘ID:

from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

# 配置订阅ID
SUBSCRIPTION_ID = "你的订阅ID"

# 初始化客户端
credential = DefaultAzureCredential()
compute_client = ComputeManagementClient(credential, SUBSCRIPTION_ID)

# 遍历所有资源组下的VM
for vm in compute_client.virtual_machines.list_all():
    # 获取VM基本信息
    vm_name = vm.name
    resource_group = vm.id.split('/')[4]  # 从VM ID中解析资源组名称
    
    print(f"\n=== 虚拟机: {vm_name} (资源组: {resource_group}) ===")
    
    # 获取OS磁盘ID
    os_disk_id = vm.storage_profile.os_disk.id
    print(f"操作系统磁盘ID: {os_disk_id}")
    
    # 获取所有数据磁盘ID
    data_disks = vm.storage_profile.data_disks
    if data_disks:
        print("数据磁盘ID列表:")
        for idx, disk in enumerate(data_disks, 1):
            print(f"  数据磁盘{idx}: {disk.id}")
    else:
        print("无数据磁盘")

如果只需要遍历指定资源组的VM,替换遍历部分为:

RESOURCE_GROUP_NAME = "你的资源组名称"

for vm in compute_client.virtual_machines.list(resource_group_name=RESOURCE_GROUP_NAME):
    # 后续逻辑同上

关键点说明

  • vm.storage_profile.os_disk.id:直接从VM的存储配置中提取OS磁盘的唯一ID
  • vm.storage_profile.data_disks:返回该VM关联的所有数据磁盘对象列表,每个对象的id属性就是磁盘ID
  • list_all()方法会拉取订阅下所有VM,若订阅内VM数量较多,可考虑添加分页处理或过滤条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:52:03