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

如何通过Azure Python SDK获取VM的OS磁盘详情并解决属性错误

解决Azure Python SDK获取VM OS磁盘信息的AttributeError问题

嘿,我来帮你搞定这个问题!你碰到的AttributeError: 'VirtualMachine' object has no attribute 'managed_disk'是因为找错属性路径啦——Azure Python SDK里的VirtualMachine对象并没有直接暴露managed_disk属性,磁盘相关的所有信息都嵌套在storage_profile下的os_disk对象里。

下面是正确获取OS磁盘名称、大小、加密信息和存储账户类型的代码示例,我给你拆解清楚:

完整代码示例

# 前提:你已经通过Azure SDK获取了目标VM对象,比如:
# from azure.mgmt.compute import ComputeManagementClient
# compute_client = ComputeManagementClient(credential, subscription_id)
# vm = compute_client.virtual_machines.get(resource_group_name, vm_name)

# 先获取OS磁盘对象
os_disk = vm.storage_profile.os_disk

# 1. 获取OS磁盘名称
disk_name = os_disk.name
print(f"OS磁盘名称: {disk_name}")

# 2. 获取磁盘大小(单位:GB)
disk_size = os_disk.disk_size_gb
print(f"OS磁盘大小: {disk_size} GB")

# 3. 获取加密状态及相关信息
if os_disk.encryption_settings:
    is_encrypted = os_disk.encryption_settings.enabled
    print(f"是否启用加密: {is_encrypted}")
    if is_encrypted:
        # 加密密钥的URL(如果使用了密钥保管库)
        encryption_key_url = os_disk.encryption_settings.disk_encryption_key.secret_url
        print(f"加密密钥URL: {encryption_key_url}")
else:
    print("该OS磁盘未配置加密设置")

# 4. 获取存储账户类型(仅托管磁盘有效,需先判断)
if hasattr(os_disk, 'managed_disk'):
    storage_account_type = os_disk.managed_disk.storage_account_type
    print(f"存储账户类型: {storage_account_type}")
else:
    print("该OS磁盘不是托管磁盘,无法获取存储账户类型")

关键说明

  • 必须先通过vm.storage_profile.os_disk拿到OS磁盘的对象,才能访问后续的磁盘属性
  • 存储账户类型storage_account_type是managed_disk的子属性,所以要先确认当前磁盘是托管磁盘(通过hasattr判断避免报错)
  • 加密信息存在encryption_settings里,需要先判断该属性是否存在,再读取加密开关和密钥信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:27:45