使用PnP PowerShell调用Get-PnPAvailableSensitivityLabel遭访问拒绝求解决方案
解决PnP PowerShell调用Get-PnPAvailableSensitivityLabel时的权限拒绝问题
问题描述
我正在使用PnP PowerShell模块调用Get-PnPAvailableSensitivityLabel cmdlet,该cmdlet用于检索当前连接租户中的Microsoft Purview可用敏感度标签。执行以下代码:
Connect-PnPOnline -Url $tenantAdminUrl $sensitivityLabels = Get-PnPAvailableSensitivityLabel Write-Output($sensitivityLabels)
收到如下权限拒绝错误:
Get-PnPAvailableSensitivityLabel : Access denied. Check for the required permissions. At line:2 char:22 + $sensitivityLabels = Get-PnPAvailableSensitivityLabel + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Get-PnPAvailableSensitivityLabel], PSInvalidOperationException + FullyQualifiedErrorId : InvalidOperation,PnP.PowerShell.Commands.Purview.GetAvailableSensitivityLabel
已使用全局管理员账号,且执行过Register-PnPManagementShellAccess并同意应用权限请求,问题仍未解决,求其他可行解决方法。
解决方法
1. 更新PnP PowerShell模块到最新版本
旧版本模块可能存在权限适配缺陷,先更新至稳定版:
Update-Module -Name PnP.PowerShell -Force
更新完成后重新连接租户执行命令。
2. 确认账号的敏感度标签管理权限
全局管理员默认不一定拥有敏感度标签的操作权限,需在Microsoft Purview合规门户中配置:
- 登录合规门户,进入敏感度标签 > 权限
- 将账号添加到敏感度标签管理员或合规管理员角色组
- 权限生效需等待15-30分钟,之后重试命令
3. 切换为应用权限认证方式
尝试使用Azure AD应用身份连接,而非用户身份:
- 在Azure AD中注册应用,授予
InformationProtectionPolicy.Read.All应用权限(归属Microsoft Graph) - 生成应用的客户端密钥或证书
- 使用以下命令连接租户:
Connect-PnPOnline -Url $tenantAdminUrl -ClientId <应用ID> -ClientSecret <客户端密钥> -Tenant <租户ID> - 再次执行
Get-PnPAvailableSensitivityLabel
4. 检查PnP Management Shell的权限配置
在Azure AD的企业应用中找到PnP Management Shell,确认其已被授予InformationProtectionPolicy.Read.All应用权限(而非委托权限),若缺失则手动添加并同意权限请求。
5. 用Microsoft Graph API验证权限
使用相同账号调用GET /informationProtection/policy/labels接口:
- 若接口返回权限拒绝,说明问题出在Azure AD权限配置,需重新梳理权限分配
- 若接口正常返回数据,则排查PnP模块的连接参数或模块本身的适配问题
内容的提问来源于stack exchange,提问作者dev123
相关产品推荐
相关产品推荐

