Powershell没有捕获异常

时间:2018-03-09 16:03:46

标签: powershell

有人可以告诉我为什么这个简单的脚本不会捕获任何异常吗?我错过了什么?

$mbxs = Get-Content C:\temp\users.txt
foreach ($mbx in $mbxs){
Try{Get-mailbox $mbx| Out-Null
Write-Output "$mbx exists"
} 
Catch [System.exception]
{write-host "$mbx doesnt exist"}
}

当脚本遇到无法找到的邮箱时,它会在屏幕上抛出错误但不执行write host命令。

1 个答案:

答案 0 :(得分:0)

它必须是一个终止错误,设置变量$ erroractionpreference,并抛弃catch定义或更具体的异常类型。

$mbxs = Get-Content C:\temp\users.txt
$ErrorActionPreference='Stop'
foreach ($mbx in $mbxs){
Try{Get-mailbox $mbx| Out-Null
Write-Output "$mbx exists"
} 
Catch{write-host "$mbx does not exist"}
}

或者如果函数是高级函数,请使用erroractionpreference参数并将其设置为停止。