Я новичок в скриптах Powershell и CMD и надеюсь, что вы поможете.Я запускаю код на R, который включает использование команды оболочки для запуска командного файла, который открывает и запускает процесс в другой программе, Quest Analytics.Я заметил, что это запускает процесс в моем диспетчере задач, который называется «QuestConsole.exe».Quest делает некоторые вещи, затем сохраняет файл на диске C и должен быть закрыт.Тем не менее, он не всегда закрывается и остается зависшим с использованием памяти, не показывая изменений.R не будет начинаться с остальной части моего кода, пока я фактически не принудительно закрою процесс в диспетчере задач.У меня нет проблем с тем, чтобы закрыть его таким образом, и R поднимает с того места, где он остановился, без проблем.Я проектирую это для автономного запуска через блестящее приложение, поэтому не смогу использовать Диспетчер задач, чтобы закрывать его каждый раз, когда оно зависает.Поэтому я решил попробовать создать скрипт Powershell, который работает в фоновом режиме и убивает процесс QuestConsole.exe, если он был активен более 6 минут.
Я пробовал 2 различных подхода в Powershell:
(Get-WmiObject win32_process -Filter “name = ‘QuestConsole.exe’”).Terminate()
и
Stop-Process -Name QuestConsole
Ни одна из этих работ.Там нет ошибки.Powershell работает, как будто все в порядке, но процесс QuestConsole.exe все еще находится в диспетчере задач (насмехается надо мной!).
Мне удалось заставить его работать в CMD:
Wmic process where name=”QuestConsole.exe” call terminate
IЯ предпочитаю использовать 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
}
}