我的剧本中有一个奇怪的问题。 我正在某些服务器上调用命令。如果我无法连接到服务器(因为它处于脱机状态或其他状态),我仍然想记录它(服务器离线> log.txt)
显然,当Try
块中发生错误时,Catch
块不会被执行。
为了测试这个,我写了一个不存在的ComputerName
参数的值。
这是我的代码:
Try {
Invoke-Command -ComputerName hui -ScriptBlock $sb
}
Catch {
Write-Host "Hello"
}
但是脚本永远不会发出“你好”
我得到的例外是PSRemotingTransportException
。我也试图指定异常,也没有工作
当我在Invoke-Command
行设置断点时,它也会忽略catch块。为什么呢?
答案 0 :(得分:8)
这不是终止错误,因此永远不会被try
/ catch
捕获。添加-ErrorAction Stop
:
Try {
Invoke-Command -ComputerName hui -ScriptBlock $sb -ErrorAction Stop
}
Catch {
Write-Host "Hello"
}