Windows でプロセス ツリーを一覧表示するにはどうすればよいでしょうか?

Windows でプロセス ツリーを一覧表示するにはどうすればよいでしょうか?

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
    }
}

変更元実際の管理者

関連情報