问题描述
我从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;
希望对其他人有帮助