如何使用PowerShell查询Azure AD所有用户及其所属组列表
解决方案
该需求完全可通过PowerShell实现,你现有脚本的核心问题是组归属匹配逻辑错误,不需要提前拉取全量组列表做匹配,直接调用Azure AD提供的用户成员身份查询接口即可高效实现需求。
前置准备
操作前需先安装Azure AD PowerShell模块,并执行Connect-AzureAD登录你的Azure AD租户。
调整后的完整脚本
# 拉取全量AAD用户 $allUsers = Get-AzureADUser -All $true # 初始化结果数组 $userGroupResult = @() foreach ($user in $allUsers) { # 获取当前用户的所有所属组(过滤掉角色、应用等其他类型的成员身份) $userGroups = Get-AzureADUserMembership -ObjectId $user.ObjectId | Where-Object {$_.ObjectType -eq "Group"} # 逐组生成结果记录 foreach ($group in $userGroups) { $resultItem = [PSCustomObject]@{ DisplayName = $user.DisplayName UserPrincipalName = $user.UserPrincipalName GroupName = $group.DisplayName } $userGroupResult += $resultItem } } # 控制台输出结构化表格,符合你要求的格式 $userGroupResult | Format-Table -AutoSize # 如需导出为CSV文件导入Hudu,可取消注释下行执行 # $userGroupResult | Export-Csv -Path "C:\AzureAD用户组归属表.csv" -NoTypeInformation -Encoding UTF8
输出示例
执行后控制台输出格式如下:
DisplayName UserPrincipalName GroupName ----------- ----------------- ----------- Name Nameson user@domain.com 技术部员工组 Name Nameson user@domain.com 办公系统权限组 Name Nameson2 user2@domain.com 人事部员工组 Name Nameson2 user2@domain.com 招聘审批组
如果需要调整输出的列名,直接修改$resultItem里的键名即可。
内容的提问来源于stack exchange,提问作者Elly
相关产品推荐
相关产品推荐

