尝试&使用Invoke-Command时捕获不起作用

时间:2016-01-27 16:25:47

标签: powershell try-catch

我的剧本中有一个奇怪的问题。 我正在某些服务器上调用命令。如果我无法连接到服务器(因为它处于脱机状态或其他状态),我仍然想记录它(服务器离线> log.txt)

显然,当Try块中发生错误时,Catch块不会被执行。

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

Try {
    Invoke-Command -ComputerName hui -ScriptBlock $sb
}
Catch {
    Write-Host "Hello"
}

但是脚本永远不会发出“你好”

我得到的例外是PSRemotingTransportException。我也试图指定异常,也没有工作

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

1 个答案:

答案 0 :(得分:8)

这不是终止错误,因此永远不会被try / catch捕获。添加-ErrorAction Stop

Try {
    Invoke-Command -ComputerName hui -ScriptBlock $sb -ErrorAction Stop
}
Catch {
    Write-Host "Hello"
}