有人可以告诉我为什么这个简单的脚本不会捕获任何异常吗?我错过了什么?
$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命令。
答案 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参数并将其设置为停止。