【发布时间】:2017-05-21 07:38:45
【问题描述】:
我的 Powershell 脚本遇到了奇怪的情况。 我编写了一个执行 .exe 文件的脚本 此 exe 运行时间约为 3 小时,但在 2 小时后不断崩溃(或多或少 1-2 分钟)
我想弄清楚为什么进程崩溃了 最终我发现 .exe 崩溃是因为 powershell 崩溃了。
这里是流程执行命令:
$Proc = Start-Process -FilePath $ExePath -ArgumentList $Arguments -NoNewWindow -PassThru
$Proc | Wait-Process -Timeout 28800 -ea 0 -ev timeouted
在我意识到 Powershell 引起的这个问题后,我启用了 windows powershell 日志记录并发现错误消息“管道已停止”
脚本需要在进程结束后执行更多操作并获取其退出代码,这就是我使用 -PassThru 标志的原因。 我尝试在不使用 PassThru 标志或 Process-Wait 命令的情况下运行它,结果保持不变(进程在 2 小时后崩溃,但没有显示“管道已停止”消息的日志)
要点:
- .exe 文件被 try;catch 块与记录器弄脏,但在崩溃时没有记录任何内容 - 这不是 .exe 文件中的运行时错误
- 从命令行独立运行 .exe 时,它会在大约 3 小时后成功完成
- Powershell 脚本以管理员权限运行
- 由于 CPU/内存/磁盘使用率高,exe 无法解决崩溃问题
一旦有更多更新,我会跟进。
感谢所有帮助者。 非常感谢您的帮助!
【问题讨论】:
-
哪个版本的 PowerShell ?
-
嗨,我用的是 4.0
标签: windows powershell crash powershell-4.0