【发布时间】:2011-08-02 14:50:44
【问题描述】:
我需要一个可以让我终止进程树的进程的命令。
例如 notepad.exe 是由资源管理器创建的。我将如何终止 explorer.exe 进程树中的 notepad.exe ?
【问题讨论】:
标签: windows command-line kill
我需要一个可以让我终止进程树的进程的命令。
例如 notepad.exe 是由资源管理器创建的。我将如何终止 explorer.exe 进程树中的 notepad.exe ?
【问题讨论】:
标签: windows command-line kill
使用taskkill /IM <processname.exe> /T。
【讨论】:
这个答案并不完全适用于这种情况,但它对寻找如何杀死整个进程树的人很有用。我们需要在这里结合一些答案以获得正确的结果:杀死进程树并强制它。
taskkill /IM "<process-name>" /T /F
对于某些进程,您需要在具有管理员权限的控制台应用程序中运行命令。
【讨论】:
现在,您可以使用 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 }
【讨论】:
taskkill /F /IM notepad.exe
这会杀死所有的notepad.exe——如果你想要一种方法来指定只杀死由foo.exe 创建的notepad.exe,我认为 Windows 命令行不够强大这个。
您可以使用tasklist 获取您要定位的进程的进程ID,然后使用taskkill /F /PID <PID> 将其杀死。
【讨论】:
尝试PsTools set 中的 PsKill + PsList 实用程序。
pslist -t会给你一个进程树(在这里你可以找到notepad.exe,它是explorer.exe的一个子进程。然后你可以使用pskill杀死指定id的进程。
【讨论】: