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

如何通过Microsoft Graph获取Azure用户列表及指定订阅管理员用户?

嘿,我来帮你捋清楚怎么用Microsoft Graph实现这两个需求——获取AD用户列表+邮箱,以及指定Azure订阅的管理员。这俩需求都能通过Graph API搞定,我给你拆解成具体步骤和实操示例:

一、获取Active Directory用户列表及邮箱地址

这部分是Graph的基础操作,核心是调用用户列表API并筛选需要的字段。

1. 权限准备

你需要先获取对应的API权限(Delegated或Application权限都可以,取决于你的应用场景):

  • 若要读取所有用户:User.Read.All 或 Directory.Read.All
  • 如果你只需要读取已登录用户能访问的用户:User.ReadBasic.All

2. API请求示例

用Graph Explorer或者直接发HTTP请求都可以,这里给你最简洁的请求,只返回你需要的字段:

GET https://graph.microsoft.com/v1.0/users?$select=displayName,mail,userPrincipalName
  • $select 参数用来指定返回的字段,避免返回冗余数据,这里选了显示名称、邮箱、用户主体名,你可以按需添加其他字段(比如id、department等)。

3. PowerShell代码示例(用Microsoft Graph模块)

如果你习惯用PowerShell,安装Microsoft.Graph.Users模块后可以这么写:

# 连接Graph,按需选择权限
Connect-MgGraph -Scopes "User.Read.All"

# 获取用户列表并导出到CSV(可选)
Get-MgUser -Property displayName,mail,userPrincipalName | Select-Object displayName,mail,userPrincipalName | Export-Csv -Path "ADUsers.csv" -NoTypeInformation
二、获取指定Azure订阅的所有管理员用户

这里要注意:Azure订阅的管理员分两种——RBAC角色管理员(比如Owner、Contributor,现在的主流模型)和经典管理员(比如服务管理员、共同管理员,旧模型),我分别给你讲怎么获取:

1. 获取RBAC角色管理员(推荐)

这类管理员是通过Azure RBAC分配的角色,比如Owner、Reader等,需要调用Graph的Azure资源角色分配API。

权限准备

需要RoleManagement.Read.All权限(Delegated或Application),如果要修改的话需要RoleManagement.ReadWrite.Directory,但你只需要读取的话前者足够。

API请求示例

替换{subscriptionId}为你的订阅ID,请求会返回该订阅下所有角色分配,并关联到用户和角色定义:

GET https://graph.microsoft.com/v1.0/roleManagement/azureResources/roleAssignments?$filter=scope eq '/subscriptions/{subscriptionId}' and principalType eq 'User'&$expand=principal,roleDefinition
  • $filter=principalType eq 'User' 用来过滤只返回用户(排除组和服务主体),如果需要包含其他主体可以去掉这个条件。
  • $expand 用来展开关联的用户信息和角色定义,方便你直接看到用户详情和角色名称。

PowerShell代码示例

Connect-MgGraph -Scopes "RoleManagement.Read.All"

$subscriptionId = "你的订阅ID"
$roleAssignments = Get-MgRoleManagementAzureResourceRoleAssignment -Filter "scope eq '/subscriptions/$subscriptionId' and principalType eq 'User'" -ExpandProperty Principal,RoleDefinition

# 整理输出需要的信息
$roleAssignments | ForEach-Object {
    [PSCustomObject]@{
        UserName = $_.Principal.DisplayName
        UserEmail = $_.Principal.Mail
        RoleName = $_.RoleDefinition.DisplayName
        UserPrincipalName = $_.Principal.UserPrincipalName
    }
} | Export-Csv -Path "SubscriptionAdmins.csv" -NoTypeInformation

2. 获取经典管理员(旧模型)

如果你的订阅还在使用经典管理员模型,可以用这个API:

GET https://graph.microsoft.com/v1.0/subscriptions/{subscriptionId}/administrators

权限需要Subscription.Read.All,返回的结果包含服务管理员、共同管理员等经典角色的用户信息。

小提示
  • 可以先在Graph Explorer里测试这些API,它会帮你自动处理权限申请和请求格式,非常方便。
  • 如果是应用程序权限(比如后台服务调用),需要在Azure AD里注册应用并授予对应的应用权限,然后用客户端凭证方式获取Token调用API。

内容的提问来源于stack exchange,提问作者John von No Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:17