
Linux ではコマンドが非常に便利であることは知っていますpstree
が、私が探しているのはそのようなものです...しかし、Windows ターミナルで詳細なプロセス リスト (ツリー) を作成するにはどうすればよいでしょうか?
答え1
というプログラムを使うことができますプロセスモニターこのプログラムを使用すると、必要なことを行うことができます。
Process Monitor は、リアルタイムのファイル システム、レジストリ、プロセス/スレッド アクティビティを表示する Windows 用の高度な監視ツールです。従来の Sysinternals ユーティリティである Filemon と Regmon の機能を組み合わせ、豊富な非破壊フィルタリング、セッション ID やユーザー名などの包括的なイベント プロパティ、信頼性の高いプロセス情報、各操作の統合シンボル サポートを備えた完全なスレッド スタック、ファイルへの同時ログなど、広範な機能強化が追加されています。その独自の強力な機能により、Process Monitor はシステムのトラブルシューティングやマルウェア検出ツールキットのコア ユーティリティになります。
また、まさにあなたが望むものを提供します:
プロセス ツリー ツールは、トレース内で参照されるすべてのプロセスの関係を表示します。
答え2
使用pslist64.exe -t
開始システム内部。
答え3
試すプロセスエクスプローラーSysinternals から。高度なタスク マネージャーのようなもので、ツリー ビューもあります。
答え4
この PowerShell コマンドレットは、Print-ProcessTree
プリミティブ プロセス ツリーを一覧表示します。
function Print-ProcessTree() {
function Get-ProcessAndChildProcesses($Level, $Process) {
"{0}[{1,-5}] [{2}]" -f (" " * $Level), $Process.ProcessId, $Process.Name
$Children = $AllProcesses | where-object {$_.ParentProcessId -eq $Process.ProcessId -and $_.CreationDate -ge $Process.CreationDate}
if ($null -ne $Children) {
foreach ($Child in $Children) {
Get-ProcessAndChildProcesses ($Level + 1) $Child
}
}
}
$AllProcesses = Get-CimInstance -ClassName "win32_process"
$RootProcesses = @()
# Process "System Idle Process" is processed differently, as ProcessId and ParentProcessId are 0
# $AllProcesses is sliced from index 1 to the end of the array
foreach ($Process in $AllProcesses[1..($AllProcesses.length-1)]) {
$Parent = $AllProcesses | where-object {$_.ProcessId -eq $Process.ParentProcessId -and $_.CreationDate -lt $Process.CreationDate}
if ($null -eq $Parent) {
$RootProcesses += $Process
}
}
# Process the "System Idle process" separately
"[{0,-5}] [{1}]" -f $AllProcesses[0].ProcessId, $AllProcesses[0].Name
foreach ($Process in $RootProcesses) {
Get-ProcessAndChildProcesses 0 $Process
}
}
変更元実際の管理者。