如何使用Azure.ResourceManager.Compute列出所有资源组中的虚拟机
使用Azure.ResourceManager.Compute列出订阅下所有虚拟机(无需遍历资源组)
要实现无需遍历资源组就能获取订阅内全部虚拟机,你可以直接利用SubscriptionResource的GetVirtualMachines()方法,该方法底层调用Azure REST API的批量查询端点,一次性拉取所有资源组的VM数据。
前置准备
确保已安装以下NuGet包:
Azure.ResourceManagerAzure.ResourceManager.ComputeAzure.Identity(用于身份验证)
代码示例(C#)
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Compute; // 使用DefaultAzureCredential完成身份验证(支持Azure CLI、Visual Studio、服务主体等多种凭据方式) ArmClient armClient = new ArmClient(new DefaultAzureCredential()); // 获取目标订阅资源实例(可替换为指定的订阅ID) var subscription = await armClient.GetDefaultSubscriptionAsync(); // 直接查询订阅下所有虚拟机,无需逐个遍历资源组 var allVms = subscription.GetVirtualMachines(); // 遍历输出虚拟机信息 await foreach (var vm in allVms) { Console.WriteLine($"VM名称: {vm.Data.Name}"); Console.WriteLine($"所属资源组: {vm.Data.ResourceGroupName}"); Console.WriteLine($"部署状态: {vm.Data.ProvisioningState}"); Console.WriteLine("---"); }
说明
GetVirtualMachines()方法会发起针对/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines的API请求,一次性返回订阅内所有虚拟机的元数据。- 身份验证部分使用
DefaultAzureCredential,适配本地开发与生产环境的多种凭据场景,无需硬编码密钥。
内容的提问来源于stack exchange,提问作者Matt Houser
相关产品推荐
相关产品推荐

