You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell为多用户及托管标识分配Azure RBAC角色?

Azure RBAC角色批量分配实现方案

需求明确

  • 批量给多个用户在订阅范围分配指定Azure RBAC角色
  • 为现有虚拟机的系统托管标识,在存储账户范围分配Reader角色

修正优化后的完整脚本

# --------------------------
# 第一部分:给VM系统托管标识分配存储账户Reader角色
# --------------------------
# 获取目标虚拟机的系统托管标识主体ID
$vm = Get-AzVM -ResourceGroupName "<资源组名称>" -Name "<虚拟机名称>"
$vmIdentityId = $vm.Identity.PrincipalId

# 执行角色分配
New-AzRoleAssignment `
    -ObjectId $vmIdentityId `
    -RoleDefinitionName "Reader" `
    -Scope "/subscriptions/<订阅ID>/resourceGroups/<存储账户所在资源组>/providers/Microsoft.Storage/storageAccounts/<存储账户名称>"

# --------------------------
# 第二部分:批量给多用户分配订阅级RBAC角色
# --------------------------
# 把需要分配角色的用户Object ID都列在这里
$userIds = @(
    "<用户1的Object ID>",
    "<用户2的Object ID>",
    "<用户3的Object ID>"
    # 要加更多用户直接往下加就行
)

# 指定要分配的RBAC角色(比如Contributor、Reader)
$roleName = "<目标RBAC角色名称>"

# 订阅范围的完整路径
$subscriptionScope = "/subscriptions/<订阅ID>"

# 循环遍历用户列表,批量分配角色
foreach ($id in $userIds) {
    New-AzRoleAssignment `
        -ObjectId $id `
        -RoleDefinitionName $roleName `
        -Scope $subscriptionScope `
        -ErrorAction SilentlyContinue  # 已拥有角色时不报错
}

使用注意事项

  • 把所有带<>的占位符替换成你实际的信息,比如资源组名、订阅ID、用户Object ID等
  • 原脚本里的拼写错误(比如StoragrAccounts、RoleDefination)已经修正,语法问题也修复了
  • 加了ErrorAction SilentlyContinue是为了避免重复分配角色时抛出错误,如果你想看到报错可以删掉这行

内容的提问来源于stack exchange,提问作者Jinnyroy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:30:46