Eiv*_*eth 5 .net powershell jit exe visual-studio
我正在编写一个模仿手表行为的 powershell 脚本。它工作正常,直到我看到一个抛出异常的 exe。
当发生这种情况时,Visual Studio 中的 JIT 调试器就会启动并打开一个对话框。我尝试使用 try/catch 块捕获异常,如下面的代码示例所示。
我知道我可以在 VS 中关闭调试器,但我不想打开它,因为它对调试很有用。我只想捕获/抑制在此脚本中遇到的异常和弹出窗口。
我读过一些资料,声称它在 powershell 中不可行,但我希望他们是错误的,并且有一些聪明的方法可以解决这个问题。有人有什么建议吗?
我尝试过的:
$tick = "-"
while ($true)
{
try {
$out = invoke-expression "$args"
}
catch {
$out = "Error: " + $_.Exception.Message
} finally {
cls
$out
$tick
if ($tick -eq "-") {$tick = "+"} else {$tick = "-"}
sleep 1
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试将[Exception]and [System.IO.IOException](我收到的具体异常)添加到 catch 块中,但没有任何运气。
Exe 使用退出代码返回错误状态而不是 .NET 异常。解决方法是检查 $lasterrorexitcode。如果您想使用 try/catch 块,则如果 LastErrorcode 不等于 0,则可以发出 throw 语句。注意:需要注意的一件事是某些 exe 使用非零错误代码返回错误以外的状态。
这是一个例子:
try {
$result = some-exe.exe
if ($lastexitcode -ne 0) {
$result = $result -join "`n"
throw "$result `n"
}
}
catch {
write-error "$_"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4468 次 |
| 最近记录: |