如何批量检查用户在所有SharePoint Online站点的权限?
一、PowerShell脚本方案(免费可控)
通过PnP PowerShell可高效批量遍历站点,排查指定用户的权限并输出结果,适合技术人员自主操作。
步骤说明:
- 首次运行需安装PnP PowerShell模块
- 替换脚本中的租户管理地址和目标用户UPN
- 运行后会输出用户有权限的站点列表,还可导出为CSV文件留存
完整脚本:
# 安装PnP PowerShell模块(首次运行执行) Install-Module -Name PnP.PowerShell -Force -AllowClobber # 设置目标用户的UPN $targetUser = "sebey@abc.com" # 连接到SharePoint Online租户管理站点 Connect-PnPOnline -Url "https://yourtenant-admin.sharepoint.com" -Interactive # 获取所有非个人站点(如需包含OneDrive,移除 -IncludeOneDriveSites:$false) $allSites = Get-PnPTenantSite -IncludeOneDriveSites:$false # 存放结果的数组 $permissionResults = @() foreach ($site in $allSites) { try { # 连接到当前站点 Connect-PnPOnline -Url $site.Url -Interactive -SkipTenantAdminCheck # 检查用户是否存在于该站点 $siteUser = Get-PnPUser -Identity $targetUser -ErrorAction SilentlyContinue if ($siteUser) { # 获取用户的权限角色 $roleAssignments = Get-PnPUserRoleAssignment -Identity $targetUser $roleList = $roleAssignments.RoleDefinition.Name -join ", " # 添加结果到数组 $permissionResults += [PSCustomObject]@{ "站点URL" = $site.Url "站点标题" = $site.Title "用户权限" = $roleList } } } catch { Write-Warning "访问站点失败 $($site.Url): $_" } } # 控制台输出结果 $permissionResults | Format-Table -AutoSize # 导出结果到CSV文件(可自定义路径) $permissionResults | Export-Csv -Path "用户站点权限列表.csv" -NoTypeInformation -Encoding UTF8
注意事项:
- 需使用SharePoint管理员权限账号运行
- 脚本会跳过无法访问的站点并输出警告
- 若要包含员工个人OneDrive站点,删除
Get-PnPTenantSite后的-IncludeOneDriveSites:$false参数
二、第三方工具方案(可视化操作)
如果不想编写脚本,可选用成熟的第三方权限管理工具,这类工具支持批量权限审计、一键移除用户权限等功能:
- AvePoint Permissions Manager:支持SharePoint Online权限的可视化审计、批量修改,可快速定位指定用户的所有权限站点,操作界面友好
- Quest SharePoint Permissions Manager:提供权限合规审计、批量权限清理功能,适合企业级权限管理场景
- Metalogix Content Matrix:除权限管理外还支持内容迁移,附带的权限模块可高效排查用户跨站点权限
这些工具均为微软生态内的可信第三方解决方案,无需代码基础即可完成需求。
内容的提问来源于stack exchange,提问作者Sebey
相关产品推荐
相关产品推荐

