PowerShell 技能连载 - 捕获本地 EXE 的错误(第 2 部分)
适用于 PowerShell 所有版本
以下是检测控制台程序发出的错误的另一种方法:
$ErrorActionPreference = 'Continue'
$result = net.exe user UserDoesNotExist 2>&1
# $? is $false when something went wrong
if ($? -eq $false) {
# read last error:
$errMsg = $result.Exception.Message -join ','
Write-Host "Something went wrong: $errMsg"
} else {
Write-Host 'All is fine.'
}
请注意 $ErrorActionPreference
的用法:当它设置为‘Stop
’时,错误将被转换为一个 .NET 异常。$ErrorActionPreference
的缺省设置是‘Continue
’。通过这个设置,脚本可以通过 $err
获得错误信息。
如果最后一次调用失败了,内置的 $?
变量将会返回 $false
。在这种情况下,代码将会返回一条错误信息(或者做其它事情,例如写日志文件)。
PowerShell 技能连载 - 捕获本地 EXE 的错误(第 2 部分)
http://blog.vichamp.com/2014/12/19/catching-errors-in-native-exes-part-2/