如何从Azure AD提取所有企业应用及其关联的用户或用户组列表
Azure AD企业应用及分配关系导出方案
前置依赖配置
- 安装Microsoft Graph PowerShell模块(替代已废弃的AzureAD模块),执行命令:
Install-Module Microsoft.Graph -Scope CurrentUser -Force - 调用命令登录Azure AD,授予必要的读权限:
Connect-MgGraph -Scopes "Application.Read.All","Directory.Read.All"
登录时需要使用有全局管理员或应用管理员权限的账号操作。
精简导出脚本
直接运行以下脚本即可导出无冗余属性的结果,最终输出为CSV文件:
# 初始化结果数组 $exportResults = @() # 获取所有企业应用(服务主体) $allEnterpriseApps = Get-MgServicePrincipal -All:$true -Filter "servicePrincipalType eq 'Application'" foreach ($app in $allEnterpriseApps) { # 获取当前应用的所有分配记录 $appAssignments = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $app.Id -All:$true if (-not $appAssignments) { # 可选:如果需要保留无分配的应用,取消注释下方代码 # $resultItem = [PSCustomObject]@{ # 企业应用名称 = $app.DisplayName # 企业应用ID = $app.AppId # 分配主体类型 = "无分配" # 分配主体名称 = "" # } # $exportResults += $resultItem continue } foreach ($assignment in $appAssignments) { # 区分主体类型是用户还是组 $principalType = $assignment.PrincipalType $principalName = $assignment.PrincipalDisplayName $resultItem = [PSCustomObject]@{ 企业应用名称 = $app.DisplayName 企业应用ID = $app.AppId 分配主体类型 = $principalType 分配主体名称 = $principalName } $exportResults += $resultItem } } # 导出结果到CSV $exportResults | Export-Csv -Path ".\Azure企业应用分配列表.csv" -NoTypeInformation -Encoding UTF8
脚本特性说明
- 仅返回核心需要的字段,没有冗余属性,不需要额外清洗数据
- 自动区分直接分配用户和分配用户组两类主体
- 支持大租户自动分页拉取,应用数量过万也可正常运行
- 可选配置是否导出无分配记录的企业应用,按需调整注释代码即可
内容的提问来源于stack exchange,提问作者Glock Amole
相关产品推荐
相关产品推荐

