我有一个Powershell脚本,该脚本使用azure cli登录并执行其他操作。一开始我就设置
$ErrorActionPreference = "Stop"
当我在ps ISE中运行脚本并且azure登录失败时,将按预期显示错误并停止执行。但是,当我从ps命令行(或从调用该脚本的批处理)运行脚本时,会显示错误-并且执行继续吗?!
我尝试了try / catch,在那儿也一样,catch只在ISE中被击中,而不是在命令行中被击中。
这对我来说似乎很奇怪。任何人都知道是什么原因造成的,以及如何解决?重新启动没有帮助:-)
答案 0 :(得分: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本身并未终止。
如果您的错误始终都在相同的位置发生,这也应该对您有用。
如果错误计数器增加,它将强制程序终止。