我使用我的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小时后崩溃但是没有记录消息"管道已经停止& #34)
要点:
一旦我有更多更新,我会跟进。
感谢所有帮助者。 非常感谢您的帮助!
答案 0 :(得分:0)
在我看来,Start-Process cmdlet适用于快速操作。但是,在尝试调试exe不能表现的原因时,还有很多不足之处。
要在您的情况下解决此问题,使用.Net对象重定向和更改有关实例化的某些内容可能很有用。我把一个示例函数放在我调试exe运行时遇到的麻烦之后。
var userId = $('.set-weather').attr('data-id')
$(document).on('click', '.location-btn', function(){
console.log(setLocation)
var data = {
location: setLocation
}
console.log("/users/" + userId)
$.ajax({
url: '/users/' + userId,
method: 'patch',
dataType: "json",
data: ({location: data}),
success: function(result){
console.log("Success")
},
error: function(result){
console.log("failure")
}
})
})
答案 1 :(得分:0)
您可以在不使用Wait-Process
的情况下进行尝试,看看它是否可以重现。
Start-Process
参数的 -Wait
。
或在没有-Wait
的作业中创建它并使用Wait-.Job
cmdlet等待作业
答案 2 :(得分:0)
尝试执行8小时的过程时,我有相同的症状,它总是会在2小时后消失,您需要清除Powershell IdleTimeout。