如何使用C#通过用户名密码登录Azure并设置订阅?
使用C#实现Azure账号登录与订阅切换(替代PowerShell脚本)
要替代你那套PowerShell的Azure登录和订阅设置操作,用C#可以借助Azure官方SDK实现更原生的集成化操作,具体步骤如下:
1. 安装必要的NuGet包
需要用到两个核心SDK包:
Azure.Identity:负责处理Azure身份验证逻辑Azure.ResourceManager:用于管理Azure订阅及资源
用dotnet CLI安装的话,执行以下命令:
dotnet add package Azure.Identity dotnet add package Azure.ResourceManager
2. 完整C#代码实现
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Resources; using System.Linq; // 替换为你的实际账号和订阅信息 string username = "<uname>"; string password = "<pwd>"; string targetSubscriptionName = "MyTestSubscription"; // 1. 通过用户名密码完成Azure登录 var credential = new UsernamePasswordCredential(username, password); // 2. 创建ARM客户端,作为后续Azure操作的入口 var armClient = new ArmClient(credential); // 3. 查找目标订阅并设置为默认 var subscriptions = armClient.GetSubscriptions(); var targetSubscription = subscriptions.FirstOrDefault(sub => sub.Data.DisplayName == targetSubscriptionName); if (targetSubscription != null) { armClient.SetDefaultSubscription(targetSubscription.Data.SubscriptionId); Console.WriteLine($"已成功切换到订阅: {targetSubscriptionName}"); } else { Console.WriteLine($"未找到指定订阅: {targetSubscriptionName}"); }
注意事项
- 这种用户名密码登录方式不支持启用了MFA(多因素认证)的账号,如果你的账号开启了MFA,建议改用
InteractiveBrowserCredential(交互式登录)或ClientSecretCredential(服务主体登录) - 确保你的账号拥有目标订阅的访问权限(至少需要订阅级别的读取权限)
- 若知道订阅ID,直接通过ID查找会比名称更高效准确,可替换为:
string subscriptionId = "你的订阅ID"; var targetSubscription = await armClient.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{subscriptionId}")).GetAsync();
内容的提问来源于stack exchange,提问作者Traci
相关产品推荐
相关产品推荐

