我在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
}
谢谢!
答案 0 :(得分:1)
默认情况下,作业不会向主机发送错误,您需要手动抛出错误。
xx:xx [am|pm]
通过检查作业对象上的#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
}
属性,您可以获得有关失败的更多信息。