使用PowerShell连接到Exchange 2019 EWS时出错

问题描述

我从Exchange 2016迁移到2019。我有一个PowerShell脚本,可使用EWS连接到Exchange以访问用户的收件箱。它一直在连接失败。我试图看看从2016年到2019年是否有什么不同,但是我还是空了。这是我用来连接到2016的代码

Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
$User_Domain = "domain"
$Password = "user_pass"
$EWS = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList "Exchange2013"
$EWS.Url = "https://mail19.server.com/EWS/Exchange.asmx"
$Username = "username"
$EWS.Credentials = New-Object System.Net.NetworkCredential -ArgumentList $Username,$Password,$User_Domain

$inBox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($EWS,[Microsoft.Exchange.WebServices.Data.WellKNownFolderName]::InBox)

运行最后一行时,出现此错误

Exception calling "Bind" with "2" argument(s): "The request Failed. The underlying connection was closed: An unexpected error occurred on a send."
At line:1 char:1
+ $inBox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($EWS,[Mic ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [],MethodInvocationException
    + FullyQualifiedErrorId : ServiceRequestException

这在我的旧版2016交换服务器上运行良好。我想知道是否需要对Exchange进行一些调整,或者是否需要对代码进行调整才能使用Exchange2019。我能够访问EWS URL并使用用户名/密码登录

解决方法

在仔细检查互联网之后,似乎与Exchange 2019实施TLS1.2有关。我在powershell脚本中添加了以下行,错误消失了

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

希望对其他人有帮助