在灾难性的PowerShell进程失败时禁止错误窗口

时间:2016-06-23 05:12:36

标签: powershell

我正在使用Powershell自动生成一些报告。这是一个令人不愉快的业务,将PDF与Excel互操作和第三方DLL拼凑在一起。由于我试图拼凑的所有粗略的东西,有时我的powershell过程完全死亡。为了缓解这个问题,我在一个类似这样的管理程序脚本中运行它:

while($moreToDo) {

    try {
        powershell -NonInteractive -NoProfile ./generate-report.ps1
    }
    catch {
        # clean up
        Write-Host "Failed. Trying again..."
    }
}

然而,当powershell进程终止时,我得到了一个' windows powershell已停止工作'对话框:

enter image description here

此对话框阻止主管脚本继续,这使我的主管脚本毫无意义。

有没有办法调用powershell,这样如果灾难性地失败,它就不会弹出这条消息而只是去世

1 个答案:

答案 0 :(得分:3)

该对话框由Windows Error Reporting系统提出。这是响应powershell.exe进程崩溃的操作系统。

可以禁用WER或配置WER以忽略powershell.exe。见https://stackoverflow.com/a/3637710。然而,这是一条非常危险的旅行之路。

更好的主意是修改脚本以免崩溃PowerShell。如果您使用代码发布问题,我们可能会帮助您找出导致崩溃的原因以及如何避免崩溃。