我遇到的情况与下面的进程类似。我们有 2 个可执行文件,foo.exe 和 bar.exe。bar.exe 总是由 foo.exe 启动。我想知道如何找出哪个 bar.exe 是由哪个 foo.exe 生成的。这可能很简单,但无法解决。
Name Pid
foo.exe 1
foo.exe 2
foo.exe 3
bar.exe 4
bar.exe 5
bar.exe 6
很高兴有 dos 或 powershell 解决方案。
答案1
您可以wmic process get Caption,ParentProcessId,ProcessId
在命令行中使用列表。或者使用进程探索器来自SysInternals 套件用于 GUI 选项。
答案2
为了跟进@Lenniey 的回答,以下是格式良好的进程列表,其中包含父 ID 和过滤条件:
$IsSee = {$_.CommandLine -match 'd:\\' -or $_.Path -match 'd:\\'};
Get-WmiObject win32_process | where -FilterScript $IsSee |
select @{l='PID';e={$_.ProcessId}},@{l='PPID';e={$_.ParentProcessId}},
@{l='#Thrd';e={$_.ThreadCount}},
@{l='vmGB';e={[math]::round($_.VM/1gb,2)}},CommandLine |
Format-Table -wrap -auto
(本例中与驱动器 D: 相关的命令)