【问题标题】:Try & Catch not working when using Invoke-Command使用 Invoke-Command 时 Try & Catch 不起作用
【发布时间】:2016-01-27 16:25:47
【问题描述】:

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

显然,当Try块发生错误时,Catch块并没有被执行。

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

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

但脚本从不发出“Hello”

我得到的例外是PSRemotingTransportException。我也试过指定异常,也没有用

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

【问题讨论】:

    标签: powershell try-catch


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。这是非常有用的信息,因为我从来没有真正了解过我应该用-ErrorAction 参数做什么。现在就像一个魅力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多