进程挂起,无法停止进程或在Powershell中终止

进程挂起,无法停止进程或在Powershell中终止,r,powershell,cmd,rstudio,R,Powershell,Cmd,Rstudio,我不熟悉Powershell和CMD脚本,希望您能提供帮助。我正在运行R中的代码,其中包括使用shell命令运行批处理文件,该批处理文件在另一个程序Quest Analytics中打开并运行一个进程。我注意到这在我的任务管理器中启动了一个名为“QuestConsole.exe”的进程。Quest做了一些事情,然后将一个文件保存到我的C驱动器中,并且应该关闭。然而,它并不总是关闭,并保持挂起状态,内存使用情况没有变化。R不会从我的代码的其余部分开始,直到我在TaskManager中强制关闭流程。我

我不熟悉Powershell和CMD脚本,希望您能提供帮助。我正在运行R中的代码,其中包括使用shell命令运行批处理文件,该批处理文件在另一个程序Quest Analytics中打开并运行一个进程。我注意到这在我的任务管理器中启动了一个名为“QuestConsole.exe”的进程。Quest做了一些事情,然后将一个文件保存到我的C驱动器中,并且应该关闭。然而,它并不总是关闭,并保持挂起状态,内存使用情况没有变化。R不会从我的代码的其余部分开始,直到我在TaskManager中强制关闭流程。我可以用这种方式关闭它,然后R在没有问题的情况下重新开始。我设计这个程序是为了通过一个闪亮的应用程序自动运行,这样就不能在每次挂断时使用任务管理器来关闭它。因此,我决定尝试构建一个Powershell脚本,该脚本在后台连续运行,如果QuestConsole.exe进程处于活动状态超过6分钟,则会终止该进程

我在Powershell中尝试了两种不同的方法:

(Get-WmiObject win32_process -Filter “name = ‘QuestConsole.exe’”).Terminate()

这两种方法都不管用。没有错误。Powershell看起来一切正常,但QuestConsole.exe进程仍在任务管理器中(嘲笑我!)

我能够在CMD中实现这一点:

Wmic process where name=”QuestConsole.exe” call terminate
我更喜欢使用Powershell,因为我已经编写了脚本,学习过程非常痛苦。有人知道在PowerShell中终止我的进程的其他方法吗?可能与我在CMD中使用的命令等效?此外,我将包括我的Powershell脚本,以防善良的灵魂可以帮助我在CMD中重新编写它

While ($True) {
$startTimeLimit = (Get-Date) - (New-TimeSpan -minutes 6)
$questStart = (Get-Process QuestConsole).StartTime
$eval = $questStart -gt $startTimeLimit
if ($eval -eq $false)
{
    Stop-Process -Name QuestConsole
}
}

没有充分的理由说明
停止进程-Name QuestConsole
不应该工作

也就是说,从实用角度讲,如果
wmic.exe
命令对您有效,只需从PowerShell调用它即可

另外,你不应该在一个紧密的循环中运行你的监控脚本——在检查之间睡眠;因此:

While ($True) {
  if (((Get-Date) - (Get-Process QuestConsole).StartTime).TotalMinutes -ge 6 {
     wmic process where 'name="QuestConsole.exe"' call terminate
  }
  Start-Sleep -Seconds 1
}

请注意围绕
wmic
过滤器参数的简化条件和
“…”
,以确保
字符被传递。

没有充分的理由说明
停止进程-名称查询控制台不应该工作

也就是说,从实用角度讲,如果
wmic.exe
命令对您有效,只需从PowerShell调用它即可

此外,您不应该在紧密循环中运行监控脚本-在检查之间休眠;因此:

While ($True) {
  if (((Get-Date) - (Get-Process QuestConsole).StartTime).TotalMinutes -ge 6 {
     wmic process where 'name="QuestConsole.exe"' call terminate
  }
  Start-Sleep -Seconds 1
}

请注意
wmic
过滤器参数周围的简化条件和
“…”
,以确保
字符。都通过了。

很高兴听到这有帮助,@JupiterIo;我的荣幸。很高兴听到这有帮助,@JupiterIo;我的荣幸。