我正在编写一个脚本,使用类似于以下内容的方式对我的邮件服务器远程运行:
$credentials = Get-Credential
$session = New-PSSession `
-ConnectionUri http://mailserver/PowerShell/ `
-Authentication Kerberos `
-ConfigurationName Microsoft.Exchange `
-Credential $credentials
$module = Import-PSSession $session
我将通过读取主机,参数或管道从用户接收收件人姓名,因此如果收件人无效且收件人收件人不成功,我希望我的脚本能够挽救。 -ErrorAction似乎是一个合乎逻辑的选择。
get-recipient "doesnotexist" -ErrorAction SilentlyContinue; write-host "will output";
get-recipient "doesnotexist" -ErrorAction Stop; write-host "will output"
get-recipient "doesnotexist" -ErrorAction Inquire; write-host "will not output if halt selected, otherwise displayed"
根据get-help about_CommonParameters,-EA应该修改非终止错误的行为。在这里,我有一个非终止错误,我想处理...终止。我知道EA正在具有一些效果,因为我通过将其设置为“查询”来获得所需的结果(以交互方式)。我想要的是在没有交互的情况下终止,所以我可以尝试/捕捉它。
答案 0 :(得分:0)
在3小时的大部分时间内解决了这个问题。当我正在接近解决方案时,这似乎是远程处理和导入Exchange会话时的范围错误。我可能弄错了。但是,这里有一个解决它的博客,同时也证实了我的怀疑。
http://rehle.blogspot.dk/2014/11/exchange-remote-sessions.html ....简而言之,对于那些想要避免打开链接或者链接被删除的人:
在使用导入的Exchange PS会话中的Exchange cmdlet的脚本中使用以下内容:
$saved=$global:ErrorActionPreference
$global:ErrorActionPreference='stop'
Try {
$box = get-mailbox nonexistent -ErrorAction Stop
}
Catch {
"Mailbox was not found"
}
Finally {
$global:ErrorActionPreference=$saved
}
我希望它有所帮助,可以帮助别人。霍拉:-D