如何通过Python SDK或PowerShell获取Azure订阅指定区域资源列表
获取Azure指定区域内的资源列表(Python/PowerShell实现)
一、Python SDK实现优化
你提供的代码已具备基础功能,可进一步优化为按资源类型分组展示,方便快速筛选Vnets、VMs等特定资源:
from azure.identity import DefaultAzureCredential from azure.mgmt.resource import ResourceManagementClient from collections import defaultdict def list_resources_by_location(subscription_id, location): # 初始化认证与资源客户端 credential = DefaultAzureCredential() resource_client = ResourceManagementClient(credential, subscription_id) # 按资源类型分组存储 resources_by_type = defaultdict(list) for resource in resource_client.resources.list_by_location(location): resources_by_type[resource.type].append({ "name": resource.name, "resource_group": resource.id.split('/')[4] }) # 输出分组结果 print(f"【{location}区域资源列表(按类型分组)】") for resource_type, items in resources_by_type.items(): print(f"\n* {resource_type}(共{len(items)}个):") for item in items: print(f" - 名称:{item['name']} | 资源组:{item['resource_group']}") # 替换为你的订阅ID和目标区域 subscription_id = "你的订阅ID" location = "eastus" list_resources_by_location(subscription_id, location)
核心优化点
- 用
defaultdict按资源类型分组,便于定位目标资源(如Vnets对应类型Microsoft.Network/virtualNetworks) - 提取资源组信息,补充资源的上下文归属
二、PowerShell实现方法
通过Azure PowerShell可直接筛选指定区域资源,支持精准查询特定类型:
1. 列出指定区域所有资源(按类型分组)
# 首次运行需登录Azure # Connect-AzAccount # 替换为你的订阅ID和目标区域 $subscriptionId = "你的订阅ID" $location = "eastus" # 切换到目标订阅 Set-AzContext -Subscription $subscriptionId # 获取资源并按类型分组输出 Get-AzResource -Location $location | Group-Object ResourceType | ForEach-Object { Write-Host "`n* $($_.Name)(共$($_.Count)个):" $_.Group | ForEach-Object { Write-Host " - 名称:$($_.Name) | 资源组:$($_.ResourceGroupName)" } }
2. 精准查询特定类型资源(以Vnets为例)
# 查询EastUS区域的所有虚拟网络 Get-AzResource -Location "eastus" -ResourceType "Microsoft.Network/virtualNetworks" | Select-Object Name, ResourceGroupName, Id
关键注意事项
- 认证要求:Python的
DefaultAzureCredential支持Azure CLI登录、环境变量配置等多种认证方式;PowerShell需先执行Connect-AzAccount完成登录 - 常见资源类型标识符:
- 资源组:
Microsoft.Resources/resourceGroups - 虚拟机:
Microsoft.Compute/virtualMachines - 存储账户:
Microsoft.Storage/storageAccounts
- 资源组:
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

