有没有办法找到给定VM的资源组,然后使用Python sdk找到Azure中VM的详细信息

有没有办法找到给定VM的资源组,然后使用Python sdk找到Azure中VM的详细信息,python,azure,sdk,virtual-machine,Python,Azure,Sdk,Virtual Machine,我在这里查阅了各种文章,但没有找到确切的解决办法 有没有办法找到给定VM的资源组,然后使用Python sdk找到Azure中VM的详细信息 有人能给我举个正确的例子吗 我想做的是 输入azure vm的私有ip 需要找出此azure计算机所在的资源组 然后,它应该在该资源管理组下获取上述vm的vm详细信息 如果您只知道虚拟机的名称,唯一的方法是通过list_all()method>列出所有虚拟机,然后通过其名称选择指定的虚拟机 注意:这里的风险是,vm的名称在不同的资源组中不是唯一的。因此,

我在这里查阅了各种文章,但没有找到确切的解决办法

有没有办法找到给定VM的资源组,然后使用Python sdk找到Azure中VM的详细信息

有人能给我举个正确的例子吗

我想做的是

  • 输入azure vm的私有ip
  • 需要找出此azure计算机所在的资源组
  • 然后,它应该在该资源管理组下获取上述vm的vm详细信息

如果您只知道虚拟机的名称,唯一的方法是通过
list_all()
method>列出所有虚拟机,然后通过其名称选择指定的虚拟机

注意:这里的风险是,vm的名称在不同的资源组中不是唯一的。因此,可能有多个vm在不同的资源组中使用相同的资源。你应该处理好这个案子

示例代码:

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

SUBSCRIPTION_ID = 'xxxx'
VM_NAME = 'xxxx'

credentials = ServicePrincipalCredentials(
    client_id='xxxxx',
    secret='xxxxx',
    tenant='xxxxx'
)

compute_client = ComputeManagementClient(
    credentials=credentials,
    subscription_id=SUBSCRIPTION_ID
)

vms = compute_client.virtual_machines.list_all()

myvm_resource_group=""

for vm in vms:
    if vm.name == VM_NAME:
        print(vm.id)

        #the vm.id is always in this format: 
        #'/subscriptions/your_subscription_id/resourceGroups/your_resource_group/providers/Microsoft.Compute/virtualMachines/your_vm_name'
        #so you can split it into list, and the resource_group_name's index is always 4 in this list.
        temp_id_list=vm.id.split('/')
        myvm_resource_group=temp_id_list[4]

print("**********************!!!!!!!!!!")

print("the vm test0's resource group is: " + myvm_resource_group)

# now you know the vm name and it's resourcegroup, you can use other methods,
# like compute_client.virtual_machines.get(resource_group_name, vm_name) to do any operations for this vm.

如果您还有更多问题,请告诉我。

关于“给定虚拟机”,您是否有虚拟机名称或其他信息?嗨,Ivan Yang,这很有帮助。实际上,现在我需要fecth、标记信息、实例信息,如cpu、类型等,以及磁盘信息、根和交换etc@asp,现在您可以获取vm实例,然后尝试查找此vm实例是否存在此类属性/方法(如vm.tag或vm.type等)。如果你无法理解,请在评论中@me。我想做这件事。让我试试,如果我需要帮助,一定要让你知道。我正在尝试获取实例的详细信息,但我没有得到所有的值,参考了描述实例的文档,但无法找到完整的信息。我正在寻找以下项目,作为VM的json格式输出<代码>资源组名称、状态、操作系统、大小、位置、公共Ip地址、虚拟网络/子网可用区域、专用Ip、静态Ip、虚拟机生成、大小:大小、vcpu、RAM、磁盘:操作系统磁盘、Azure磁盘加密、数据磁盘卷::名称、大小、存储帐户、加密卷标记:其密钥和值备份:备份预检查、上次备份状态,Backu poliy:需要它的名称是否有一个描述vm类型的命令来给出上述属性