捕获 Exchange 命令行管理程序中的错误

2024-04-27

我正在尝试编写一个创建 Exchange 邮箱的 powershell 脚本。只要邮箱尚不存在,这种方法就可以正常工作,但是当我尝试捕获任何错误并将其报告回来时,脚本就会运行,就好像一切都很好一样。

我在现有用户上运行该脚本,它显示了错误,但它正常返回,就像创建了邮箱一样。

I found 这个问题 https://stackoverflow.com/questions/1142211/try-catch-does-not-seem-to-have-an-effect,这解决了“为什么”,我猜 Enable-Mailbox 命令只会抛出非终止错误。

无论如何,所有建议的捕获这些错误的解决方案都失败了。该 cmdlet 似乎忽略了 $ErrorActionPreference 变量 $?无论是否发生错误,始终为 $true。 $error 总是包含一些东西,所以这里也没有什么可以检查的。

这是我正在使用的脚本代码,非常基本。

param( [string]$uid, [string]$email )
trap [Exception] { 
    "ERROR: " + $_.Exception.Message
    exit
}
Enable-Mailbox -Identity $uid -Database HaiTest-MBDataBase-01 -PrimarySmtpAddress $email
"SUCCESS: mailbox created successfully"

它可以与其他所有东西一起使用,只是 Exchange Management Shell 会引起麻烦。 Exchange 环境是 Exchange 2010 服务器。

有没有办法检查 cmdlet 是否有错误?


捕获错误仅适用于终止错误,看起来像您从中得到的错误Enable-Mailbox不是终止错误。您可以通过向 ErrorAction 变量传递“Stop”值来强制错误成为终止错误。您还可以使用 try/catch(在 PowerShell 2.0 中)代替 trap:

param( [string]$uid, [string]$email )
trap { 
    "ERROR: " + $_.Exception.Message
    exit
}
Enable-Mailbox -Identity $uid -Database HaiTest-MBDataBase-01 -ErrorAction Stop -PrimarySmtpAddress $email 
"SUCCESS: mailbox created successfully" 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获 Exchange 命令行管理程序中的错误 的相关文章

随机推荐