如何用PowerShell生成含指定字段的全Azure AD用户及管理者报告?
获取Azure AD用户及其管理者完整列表(含无管理者用户)
没问题!针对你的需求,我整理了一份适合新手的PowerShell脚本,能帮你一次性导出包含指定字段的用户及其管理者列表,包括那些没有管理者的用户。
首先,先确保你已经安装并连接了AzureAD模块(如果还没做的话):
# 安装AzureAD模块(首次运行需要) Install-Module AzureAD -Force -AllowClobber # 连接到你的Azure AD租户 Connect-AzureAD
接下来,运行这段脚本就能得到你需要的所有信息:
# 拉取所有Azure AD用户(-All $true确保拿到全部用户,不是默认的前100条) $allUsers = Get-AzureADUser -All $true # 创建一个空数组用来存最终结果 $userManagerData = @() # 逐个处理每个用户 foreach ($user in $allUsers) { # 查询当前用户的管理者,加-ErrorAction避免无管理者时抛出错误 $manager = Get-AzureADUserManager -ObjectId $user.ObjectId -ErrorAction SilentlyContinue # 组装需要的字段,无管理者时对应字段设为$null(你也可以改成"无管理者"这类文本) $userRecord = [PSCustomObject]@{ UsersObjectId = $user.ObjectId UserUPN = $user.UserPrincipalName UserType = $user.UserType ManagersObjectId = if ($manager) { $manager.ObjectId } else { $null } ManagerUPN = if ($manager) { $manager.UserPrincipalName } else { $null } ManagerUserType = if ($manager) { $manager.UserType } else { $null } } # 把这条记录加入结果数组 $userManagerData += $userRecord } # 在控制台查看结果 $userManagerData # 如果要导出成CSV文件方便后续处理,取消下面这行注释并修改路径 # $userManagerData | Export-Csv -Path "C:\Your\Save\Path\User_Manager_List.csv" -NoTypeInformation
关键细节说明:
-All $true:必须加上这个参数,不然默认只会返回前100个用户,漏掉大量数据-ErrorAction SilentlyContinue:当用户没有管理者时,这个参数会让命令静默跳过错误,不会打断脚本执行,同时$manager会变成null- 空值处理:用
if ($manager)判断是否存在管理者,不存在就给对应字段赋值$null,你可以根据需要改成更友好的文本,比如把$null换成"无管理者" - 权限要求:确保你的账号有读取Azure AD用户和管理者信息的权限,不然会报错
如果运行过程中遇到问题,比如权限不足或者模块安装失败,可以告诉我具体的错误信息,我再帮你排查~
内容的提问来源于stack exchange,提问作者Andy Thompson
相关产品推荐
相关产品推荐

