этот ответ может быть немного поздно, но у меня была та же проблема с подключением к EWS.
Он работал нормально с Powershell ISE, но не работал с Powershell.exe.
После нескольких часов тестирования я наконец понял, что между Powershell и ISE есть разница в том, как они обрабатывают ошибки.
$errorlength = $Error.Count
$EmailAddress= Get-Mailbox -Identity $shortname.SamAccountName| Select-Object WindowsEmailAddress
if($errorlength -lt $Error.Count){
throw "Bad thing happened"
}
Моя проблема заключалась в том, что некоторые почтовые ящики в нашем списке адресов находятся в облаке office365, а некоторые - на сервере Exchange.
Каким-то образом Powershell ISE завершился с ошибкой, а сам Powershell - нет.
Если ваша ошибка также постоянно возникает в одной и той же позиции, это должно сработать и для вас.
Вынуждает программу завершиться, если обнаруживается ошибка.