1

我有一个使用 azure cli 登录并执行许多其他操作的 powershell 脚本。一开始我设置

$ErrorActionPreference = "Stop"

当我在 ps ISE 中运行脚本并且天蓝色登录失败时,将显示错误并且执行停止,正如预期的那样。但是,当我从 ps 命令行(或从调用脚本的批处理)运行脚本时,会显示错误 - 并继续执行?!

我尝试了 try/catch,同样的事情,catch 只在 ISE 中被击中,而不是从命令行中被击中。

这对我来说似乎很奇怪。任何人都知道是什么原因造成的以及我如何解决它?重新启动没有帮助:-)

4

1 回答 1

0

这个答案可能有点晚了,但我在连接 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 本身却没有。

如果您的错误也一直发生在完全相同的位置,这也应该适用于您。

如果错误计数器上升,它会强制程序终止。

于 2019-06-11T12:14:56.200 回答