首页 > 解决方案 > 如何使用 Python 列出 Azure 虚拟机?

问题描述

我已使用以下代码从我的 Azure 帐户获取访问令牌。

https://github.com/AzureAD/azure-activedirectory-library-for-python/blob/dev/sample/certificate_credentials_sample.py

它工作正常,我已经得到了令牌。

但是,如何使用此令牌列出所有在该订阅/资源组中运行的带有 Azure SDK for Python 的 VM?

我猜微软文档有点混乱。

谢谢。

标签: pythonpython-3.xazure

解决方案


您可以使用函数list_all() / list()获取订阅/资源组中的所有 VM,但这些响应不会向您显示 VM 运行状态。所以你还需要函数instance_view()来获取 VM 运行状态。

最后,列出在该订阅/资源组中运行的所有 VM 的示例代码如下:

from azure.mgmt.compute import ComputeManagementClient
from azure.common.credentials import ServicePrincipalCredentials


Subscription_Id = "xxxxx"
Tenant_Id = "xxxxx"
Client_Id = "xxxxx"
Secret = "xxxxx"

credential = ServicePrincipalCredentials(
        client_id=Client_Id,
        secret=Secret,
        tenant=Tenant_Id
        )

compute_client = ComputeManagementClient(credential, Subscription_Id)

vm_list = compute_client.virtual_machines.list_all()
# vm_list = compute_client.virtual_machines.list('resource_group_name')
i= 0
for vm in vm_list:
    array = vm.id.split("/")
    resource_group = array[4]
    vm_name = array[-1]
    statuses = compute_client.virtual_machines.instance_view(resource_group, vm_name).statuses
    status = len(statuses) >= 2 and statuses[1]

    if status and status.code == 'PowerState/running':
        print(vm_name)

推荐阅读