在Powershell中捕获错误

时间:2017-01-09 13:37:14

标签: powershell

我有一个奇怪的问题,当我使用try / catch方法为某些cmdlet工作时,某些没有。

你能就此提出建议吗?

这个工作正常:

try
{ 
$LookingForRemoteMailboxOnPrem  = Get-RemoteMailbox $info  -ErrorAction Stop | select -ExpandProperty UserPrincipalName 
}
catch
{
string]$t = $Error[0]
}

但这不是:

try
{
$EnableRemoteMailbox = Enable-RemoteMailbox $info -RemoteRoutingAddress $remote -PrimarySmtpAddress $info2 -ErrorAction Stop
}
catch
{
[string]$t = $Error[0]
}

不将错误保存到$ t变量

1 个答案:

答案 0 :(得分:0)

默认情况下,$ErrorActionPreference设置为Continue。这意味着PowerShell可以恢复"从错误中它不会抛出异常。您可以使用-ErrorAction参数更改每个cmdlet的行为。

这个link给出了一个很好的例子:

Try {dir c:\missingFolder} Catch [System.Exception] {"Caught the exception"} Finally {$error.Clear() ; "errors cleared"}

PowerShell窗口中不会出现字符串"Caught the exception。如果您将-ErrorAction设置为Stop,则会引发异常。

详细说明here