我有一个奇怪的问题,当我使用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变量
答案 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。