【问题标题】:Powershell execute script block on exceptionPowershell在异常时执行脚本块
【发布时间】:2018-03-14 18:03:19
【问题描述】:

我正在寻找一种在 powershell 中运行脚本块的方法,或者一些代码发生异常或终止写入错误之后。

基本上,如果我遇到了抛出或写入错误,那么我希望最高范围(主)关闭所有 PSSession 并执行 get-job |在我们停止执行之前删除作业。

如果我设置了 $ErrorActionPreference = "Stop",我不确定这是否可行

这是我在等待答案时想到的……但我会继续提出这个问题,以防有人有更好的解决方案:

#Wait on feedback from children
try{
    While (Get-Job -State "Running")
    {
        Get-Job | Receive-Job
        Start-Sleep 2
    }
    Get-Job | Receive-Job
} finally {
    Get-PSSession | Remove-PSSession
    Get-Job | Remove-Job
}

谢谢!

【问题讨论】:

  • 请举例说明。

标签: powershell exception try-catch


【解决方案1】:

作业默认不会向主机发送错误,您需要手动抛出错误。

#Wait on feedback from children
try{
    While (Get-Job -State "Running")
    {
        if (Get-Job -State 'Failed'){ throw 'Job failed.' }
        Get-Job | Receive-Job
        Start-Sleep 2
    }
    Get-Job | Receive-Job
} finally {
    Get-PSSession | Remove-PSSession
    Get-Job | Remove-Job
}

您可以通过检查作业对象上的JobState 属性来获取有关失败的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 2019-08-15
    相关资源
    最近更新 更多