使用Invoke-Command时,Try&Catch无法正常工作

Sim*_*onS 2 powershell try-catch

我的脚本中有一个奇怪的问题.我正在某些服务器上调用命令.如果我无法连接到服务器(因为它是脱机的或其他东西)我仍然想记录(服务器脱机> log.txt)

显然,当Try块中发生错误时,Catch不执行该块.

为了测试这个,我给ComputerName不存在的参数写了一个值.这是我的代码:

Try {
    Invoke-Command -ComputerName hui -ScriptBlock $sb
}
Catch {
    Write-Host "Hello"
}
Run Code Online (Sandbox Code Playgroud)

但是脚本从未发出"你好"

我得到的例外是PSRemotingTransportException.我也试着指定异常,也没用

当我在该Invoke-Command行设置断点时,它也会忽略catch块.为什么?

bri*_*ist 8

这不是终止错误,所以它永远不会被try/ 抓住catch.添加-ErrorAction Stop:

Try {
    Invoke-Command -ComputerName hui -ScriptBlock $sb -ErrorAction Stop
}
Catch {
    Write-Host "Hello"
}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。这是非常有用的,因为我从来没有真正得到我应该用“-ErrorAction”参数做什么。现在就像一个魅力! (2认同)