PowerShell 7中Connect-ExchangeOnline命令挂起问题求助
问题:PowerShell 7中Connect-ExchangeOnline命令挂起,PowerShell 5可正常运行
环境说明:PowerShell 5和PowerShell 7均使用ExchangeOnlineManagement v3.5.0模块。
现象
在PowerShell 7中执行Connect-ExchangeOnline命令时出现挂起/冻结,添加-Verbose参数后仅返回以下信息:
VERBOSE: Returning precomputed version info: 3.5.0 VERBOSE: ModuleVersion: 3.5.0
已尝试卸载并重装模块,问题未解决。
命令通常用于如下脚本:
Import-Module ExchangeOnlineManagement $Email = Read-Host "Please enter your *FULL* AZ admin email" Connect-ExchangeOnline -UserPrincipalName $Email ...
手动在PowerShell 7会话中执行相同语句,依旧挂起;终止命令时显示以下错误:
Error Acquiring Token: System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at System.Threading.CancellationToken.ThrowIfCancellationRequested() at Microsoft.Identity.Client.Platforms.Shared.DefaultOSBrowser.HttpListenerInterceptor.ListenToSingleRequestAndRespondAsync(Int32 port, String path, Func`2 responseProducer, CancellationToken cancellationToken) at Microsoft.Identity.Client.Platforms.Shared.Desktop.OsBrowser.DefaultOsBrowserWebUi.InterceptAuthorizationUriAsync(Uri authorizationUri, Uri redirectUri, Boolean isBrokerConfigured, CancellationToken cancellationToken) at Microsoft.Identity.Client.Platforms.Shared.Desktop.OsBrowser.DefaultOsBrowserWebUi.AcquireAuthorizationAsync(Uri authorizationUri, Uri redirectUri, RequestContext requestContext, CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.AuthCodeRequestComponent.FetchAuthCodeAndPkceInternalAsync(IWebUI webUi, CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.AuthCodeRequestComponent.FetchAuthCodeAndPkceVerifierAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.GetTokenResponseAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.InteractiveRequest.ExecuteAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.Internal.Requests.RequestBase.RunAsync(CancellationToken cancellationToken) at Microsoft.Identity.Client.ApiConfig.Executors.PublicClientExecutor.ExecuteAsync(AcquireTokenCommonParameters commonParameters, AcquireTokenInteractiveParameters interactiveParameters, CancellationToken cancellationToken) at Microsoft.Exchange.Management.AdminApiProvider.Authentication.MSALTokenProvider.GetAccessTokenAsync(String claims, String cmdletId)
解决建议
- 强制使用网页登录:执行命令时添加
-UseWebLogin参数,绕过PowerShell内置的浏览器交互逻辑,直接调用系统默认浏览器完成身份验证:Connect-ExchangeOnline -UserPrincipalName $Email -UseWebLogin - 使用设备代码登录:如果网页登录仍有问题,改用设备码验证方式,避免本地浏览器的拦截问题:
执行后按照提示访问指定网址,输入设备码完成登录。Connect-ExchangeOnline -UserPrincipalName $Email -Device - 检查网络与代理设置:错误日志显示MSAL在获取令牌时被取消,大概率是代理拦截了本地HTTP监听。关闭代理服务器,或者将
localhost、127.0.0.1加入代理白名单。 - 清理令牌缓存:删除以下路径的缓存文件,重新启动PowerShell后尝试连接:
%USERPROFILE%\.azure%USERPROFILE%\AppData\Local\Microsoft\TokenCache
- 调整PowerShell 7运行权限:以管理员身份启动PowerShell 7,同时检查执行策略是否允许脚本运行(临时设置为
RemoteSigned测试):Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 降级模块版本:尝试卸载v3.5.0,安装v3.4.0版本的ExchangeOnlineManagement模块,部分版本在PowerShell 7中有兼容性修复:
Uninstall-Module ExchangeOnlineManagement -Force Install-Module ExchangeOnlineManagement -RequiredVersion 3.4.0 -Scope CurrentUser -Force
内容的提问来源于stack exchange,提问作者AKO
相关产品推荐
相关产品推荐

