Завершить процесс дерева процессов в командной строке (Windows) - PullRequest
8 голосов
/ 10 апреля 2011

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

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

Ответы [ 4 ]

6 голосов
/ 10 апреля 2011

Использование taskkill /IM <processname.exe> /T.

2 голосов
/ 11 апреля 2011
taskkill /F /IM notepad.exe

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

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

2 голосов
/ 10 апреля 2011

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

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

0 голосов
/ 06 января 2017

В настоящее время вы можете сделать это с помощью 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 }
...