我正在使用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已停止工作'对话框:
此对话框阻止主管脚本继续,这使我的主管脚本毫无意义。
有没有办法调用powershell,这样如果灾难性地失败,它就不会弹出这条消息而只是去世?
答案 0 :(得分:3)
该对话框由Windows Error Reporting系统提出。这是响应powershell.exe进程崩溃的操作系统。
可以禁用WER或配置WER以忽略powershell.exe。见https://stackoverflow.com/a/3637710。然而,这是一条非常危险的旅行之路。
更好的主意是修改脚本以免崩溃PowerShell。如果您使用代码发布问题,我们可能会帮助您找出导致崩溃的原因以及如何避免崩溃。