在命令行中终止进程树的进程(Windows)

时间:2011-04-10 19:30:23

标签: windows command-line kill

我需要一个允许我终止进程树进程的命令。

例如notepad.exe是由资源管理器创建的。如何终止notepad.exe进程树中的explorer.exe

5 个答案:

答案 0 :(得分:6)

使用taskkill /IM <processname.exe> /T

答案 1 :(得分:2)

尝试PsTools set中的PsKill + PsList实用程序。

pslist -t会为您提供一个流程树(在这里您可以找到notepad.exe这是explorer.exe的子流程。然后您可以使用pskill来终止流程具有指定的ID。

答案 2 :(得分:2)

taskkill /F /IM notepad.exe

这会杀死所有notepad.exe - 如果你想要一种方法来指定只杀死由notepad.exe左右创建的foo.exe,我不认为Windows命令行足够强大。

您可以使用tasklist获取要定位的流程的流程ID,然后使用taskkill /F /PID <PID>将其删除。

答案 3 :(得分:1)

此答案并不完全适合这种情况,但对于希望杀死整个进程树的人们来说可能很有用。我们需要在这里结合一些答案以获得正确的结果:杀死进程树并强制执行。

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

对于某些进程,您需要在具有管理员权限的控制台应用程序中运行命令。

答案 4 :(得分:0)

如今,您可以使用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 }