Завершить процесс дерева процессов в командной строке (Windows)

#windows #command-line #kill

#Windows #командная строка #уничтожить

Вопрос:

Мне нужна команда, которая позволит мне завершить процесс дерева процессов.

Например, notepad.exe был создан Explorer. Как бы мне завершить процесс notepad.exe в explorer.exe дереве процессов?

Ответ №1:

Этот ответ не совсем подходит для этого случая, но он может быть полезен для людей, ищущих, как уничтожить все дерево процессов. Нам нужно объединить некоторые ответы здесь, чтобы получить правильный результат: завершите дерево процессов и запустите его принудительно.

taskkill /IM "<process-name>" /T /F

Для некоторых процессов вам необходимо запустить команду в консольном приложении с правами администратора.

Ответ №2:

Используйте taskkill /IM <processname.exe> /T .

Комментарии:

1. Это совсем не то, что я хочу делать

2. 🙂 это было указано, но скрыто, потому что оно не помещено в виде кода

3. Разве это не убило бы все notepad.exe Какие процессы? Также вопрос заключается в том, чтобы убить notepad.exe в рамках некоторого конкретного родительского процесса.

Ответ №3:

В настоящее время вы можете сделать это с помощью PowerShell:

 $cimProcesses = Get-CimInstance -Query "select ProcessId, ParentProcessId from Win32_Process where Name = 'notepad.exe'"
$processes = $cimProcesses | Where-Object { (Get-Process -Id $_.ParentProcessId).ProcessName -eq "explorer" } | ForEach-Object { Get-Process -Id $_.ProcessId }

$processes.Kill()
  

Или изящный способ:

 $cimProcesses = Get-CimInstance -Query "select ProcessId, ParentProcessId from Win32_Process where Name = 'notepad.exe'"
$cimProcesses = $cimProcesses | Where-Object { (Get-Process -Id $_.ParentProcessId).ProcessName -eq "explorer" }

$cimProcesses | ForEach-Object { taskkill /pid $_.ProcessId }
  

Ответ №4:

 taskkill /F /IM notepad.exe
  

Это уничтожило бы все notepad.exe ‘ы — если вам нужен способ указать, чтобы уничтожались только те notepad.exe ‘ы, которые были созданы foo.exe или около того, я не думаю, что командные строки Windows достаточно мощны для этого.

Вы могли бы использовать tasklist для получения идентификатора процесса, на который вы хотите нацелиться, а затем использовать taskkill /F /PID <PID> для его завершения.

Ответ №5:

Попробуйте утилиты PsKill PsList из набора PsTools.

pslist -t выдаст вам дерево процессов (здесь вы можете найти, notepad.exe которое является дочерним процессом explorer.exe . Затем вы можете использовать pskill для завершения процесса с указанным идентификатором.