使用PowerShell创建会话连接Microsoft Exchange时持续出现访问拒绝错误的问题
Exchange Online PowerShell 远程连接报访问拒绝的排查方案
针对执行手动New-PSSession命令连接时,弹出AccessDenied,PSSessionOpenFailed报错的场景,按以下优先级完成排查:
账号权限类排查项
- 确认使用的全局管理员账号已绑定有效Exchange Online商业许可:未分配Exchange Online许可的全局管理员,即使持有全局角色权限,默认也不具备Exchange Online PowerShell的访问资格
- 检查账号是否被配置了远程PowerShell访问限制:通过已能正常连接的管理员账号执行
Get-User <问题账号UPN> | Format-List RemotePowerShellEnabled,确认返回值为$true;若返回$false,需执行Set-User <问题账号UPN> -RemotePowerShellEnabled $true开启对应权限 - 核查Azure AD侧的拦截规则:重点确认两个拦截项
- 租户是否开启了「拦截旧式Basic身份验证」的条件访问策略,当前执行的命令使用Basic认证模式,被该规则覆盖时必然触发访问拒绝
- 账号的所在登录位置、客户端应用类型是否在条件访问策略的拦截范围内
- 临时拦截场景校验:若账号近30天内连续多次触发连接失败,服务端会临时拦截该账号的PowerShell访问权限,拦截窗口通常为1小时,可等待窗口过期后重试
连接配置类排查项
- 匹配对应租户环境的连接URI:公共全球环境使用
https://outlook.office365.com/powershell-liveid/,国内专有云租户需替换为https://partner.outlook.cn/PowerShell-LiveID/,URI配置错误引发的跳转异常会触发权限校验失败 - 修正凭据输入格式:Credential对象中的账号必须使用完整UPN格式(例如
admin@contoso.onmicrosoft.com),不能使用域内短账户名 - 适配多因素认证(MFA)场景:若账号已开启MFA,传统Basic认证模式的手动连接会被服务端直接拒绝,需弃用当前的
New-PSSession连接逻辑,改用Exchange Online Management模块提供的Connect-ExchangeOnline命令完成认证流程 - 校验本地TLS配置:PowerShell 5.1默认仅启用TLS 1.0的环境会被服务端拒绝握手,连接前需先执行
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12强制启用TLS 1.2,再重试连接
网络环境类排查项
- 检查本地网络出口是否对
outlook.office365.com相关域名做了代理拦截、SSL证书剥离,这类中间人转发机制会导致认证凭据无法正常传递到Exchange服务端,最终触发访问拒绝
内容的提问来源于stack exchange,提问作者Majd Nakhleh
相关产品推荐
相关产品推荐

