Убить процесс, если он заморожен - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу убить Chrome, если он заморожен;поэтому я написал сценарий для PowerShell, и он был связан с задачей, запланированной в диспетчере задач, которая выполняется каждый час.Проблема в том, что он всегда убивает Chrome не только когда он заморожен.Что не так со скриптом?

$response = Get-Process -Name chrome |
            Select-Object -ExpandProperty Responding

if ($response -ne 'True') {
    taskkill /f/im chrome
} else {
    Write-Host "Its Good"
    exit
}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

В вашем скрипте: отвечающее свойство является логическим.Переменная $ response является либо массивом, содержащим логическое значение (если у вас запущено несколько процессов Chrome, либо логическое значение (если запущен только один процесс Chrome)

Когда вы пишете if ($response -ne 'True') Вы говорите: «если $Массив ответов не равен строке 'True' ". Редактировать: после тестирования благодаря @ TheIncorrigible1, $ response преобразуется в виде строк

Для выполнения вашего запроса я бы предложил следующее:

$response = get-process -Name chrome


$response | ForEach-Object {
    if ($_.Responding) {
    #Your process is responding 'no problemo'
    Write-Host "$($_.ProcessName) is responding"
    }
    else {
    #Your process is not responding
    $_ | stop-process -force #edited after testing
    Write-Host "$($_.ProcessName) killed"
    }

}

Надеюсь, это поможет:)

0 голосов
/ 22 февраля 2019

Сценарии PowerShell имеют расширение .ps1, например.И у вас есть анти-шаблон в вашем условном выражении:

$response -ne 'True'

$response - логическое значение, так что оно есть или нет.Вы не должны сравнивать это со строкой.

Я бы предложил что-то подобное, потому что хром порождает много процессов:

foreach ($chrome in Get-Process -Name chrome) {
    if (-not $chrome.Responding) {
        $chrome | Stop-Process -Force
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...