PowerShell で実行中のプロセスのリストを取得する方法

この記事では、プロセス監視のための PowerShell の利用法を掘り下げ、Get-Process
コマンドレットを強調しています。Get-Process
コマンドレットは、プロセス管理の基本的なものであり、Windows マシン上で実行中のプロセスの包括的なビューを提供し、プロセス ID、名前、メモリ使用量、CPU 消費などの重要な情報を表示します。
この記事では、コマンドレットの構文とパラメーターについて体系的に説明し、一般的および特定のプロセスの問い合わせに対応しています。
PowerShell で実行中のプロセスのリストを表示するために Get-Process
コマンドレットを使用する
PowerShell 環境には 200 以上のコマンドレットが利用可能です。各コマンドレットは特定の機能を実行する責任があります。
Get-Process
は、Windows マシン上で実行中のプロセスのリストを取得するのに役立つ頻繁に使用されるコマンドレットの一つです。
このコマンドレットは、プロセス ID、名前、メモリ使用量など、各プロセスに関連する有用な情報を提供します。また、システムの実行中のプロセスのスナップショットを表示します。
構文:
Get-Process [[-ProcessName] string[]] [-NameOfTheComputer string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Get-Process -processID Int32[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Get-Process -ProcessInputObject Process[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
パラメーター:
ProcessName string[
]: 取得するプロセス名の配列を指定します。このパラメーターはパターンマッチングのためにワイルドカード文字を受け入れます。このパラメーターが省略されると、Get-Process
はすべてのプロセスを取得します。ProcessId Int32[]
: 取得するプロセスのプロセス ID を指定します。このパラメーターは、特定のプロセスを直接ターゲットにすることを可能にします。InputObject Process[]
: プロセスオブジェクトの配列を指定します。このパラメーターは、プロセスオブジェクトをGet-Process
にパイプすることを可能にします。NameOfTheComputer string[]
: コマンドを実行するコンピュータの名前を示します。このパラメーターが省略されると、Get-Process
はローカルコンピュータからプロセスを取得します。FileVersionInfo
: プロセスオブジェクトにファイルバージョン情報を追加します。これは、プロセスの実行可能ファイルの詳細(バージョン、製品名など)が必要な場合に便利です。Module
: 各プロセスによって読み込まれるモジュール(DLL および実行可能ファイル)を含めます。これは、プロセスによって読み込まれる DLL を確認するなど、より詳細な分析に役立ちます。[CommonParameters]
: これらはすべてのコマンドレットがサポートするパラメーターで、-Verbose
、-Debug
、-ErrorAction
、-ErrorVariable
、-OutVariable
、-OutBuffer
、および-PipelineVariable
などがあります。
パラメーターは Get-Process
コマンドレットにとってオプションであり、必要に応じてこれらのパラメーターを使用できます。
すべての実行中のプロセスを表示する
パラメーターなしで Get-Process
コマンドを直接使用できます。このコマンドは、その時点で実行中のすべてのプロセスを表示するはずです。
また、Get-Process
コマンドの代わりに gps
エイリアスを使用することもできます。
Get-Process
gps
出力:
Get-Process
または gps
のいずれかを実行すると、PowerShell はシステム全体のクエリを開始し、すべてのアクティブプロセスに関する情報を収集します。これらのコマンドにパラメーターがないことは、PowerShell にフィルターを適用せず、すべてのプロセスの詳細を取得するように指示します。
PowerShell はその後、各実行中のプロセスに関する詳細データを収集します。このデータには、これらのプロセスの状態と特性を説明するさまざまな属性が含まれています。
PowerShell はこれを表示用にテーブル形式に整形します。この表形式は、情報を明確で読みやすい方法で提示するために設計されています。
テーブルには通常、いくつかの主要な列が含まれています:
Id
: この列はプロセス識別子(PID
)を示し、各プロセスに割り当てられた固有の数値ラベルです。PID
は特定のプロセスを一意に識別し、管理する上で重要です。ProcessName
: これはプロセスを開始した実行可能ファイルの名前です。特に有名なアプリケーションの場合、プロセスを簡単に認識するのに役立ちます。CPU(s)
: ここでは、プロセスが消費した CPU 時間の量が表示されます。これは秒単位で測定され、システム性能に影響を与える可能性のある重要な CPU リソースを使用しているプロセスを評価するために重要です。PM(K)
: これはキロバイト単位のPaged Memory
を表します。ディスクにページングできるプロセスが使用しているメモリのサイズを示します。このメトリックは、プロセスのメモリ使用量を監視するために重要であり、パフォーマンスチューニングとリソース管理には不可欠です。
特定のプロセスの情報を取得する
PowerShell を使用して特定のプロセスに関する情報を取得する際、いくつかの構文オプションがあります。Get-Process -Name processName
と Get-Process processName
の両方が有効で、同じ結果を達成しますが、構文構造はわずかに異なります。
Get-Process -Name typora
または
Get-Process typora
Get-Process -Name typora
または Get-Process typora
のいずれかを実行すると、PowerShell は実行中のプロセスをフィルタリングし、typora
という名前のプロセスに特化した情報を返します。これは、興味のあるプロセスの正確な名前を知っているときに特に便利です。
内部では、PowerShell はすべてのプロセスのリストを通じて typora
と一致するプロセス名を探します。プロセスが実行中であれば、その詳細が表示されます。
出力:
複数のプロセスの情報を取得する
PowerShell で Get-Process
コマンドレットを使用して複数のプロセスの情報を取得する場合、コマンド Get-Process NotePad, Outlook
のように、PowerShell は同時に複数のアイテムを処理できる能力を利用しています。
Get-Process NotePad, Outlook
Get-Process NotePad, Outlook
を実行することにより、PowerShell に NotePad
と Outlook
という複数のプロセスの詳細を同時に取得するよう指示します。このコマンドは、いくつかの特定のプロセスを監視する必要があるときに便利です。
PowerShell は、単一プロセスコマンドと同様の操作を実行しますが、指定された各プロセス名に対して行い、すべての一致を表示します。
出力:
さらに、プロセス名にそのワイルドカードを使用することもできます。
指定された属性を持つプロセスオブジェクトを取得する
必要に応じて特定の属性のプロセスオブジェクト情報を表示できます。NotePad
プロセスの Process ID
のみを取得しましょう。
(Get-Process NotePad).Id
コマンド (Get-Process NotePad).Id
では、まず NotePad
のプロセスオブジェクトを取得し、その後 Id
プロパティにアクセスします。この技術は、プロセスに関する特定の情報(例えば、その Process ID
)にのみ興味があるときに便利です。
出力:
また、次のように NotePad
プロセスの CPU 時間属性を取得することもできます。
(Get-Process NotePad).CPU
同様に、(Get-Process NotePad).CPU
は NotePad
プロセスの CPU 使用情報を取得します。これらのコマンドは、プロセスオブジェクトから特定のデータポイントを抽出する方法を示しています。
出力:
プロセスの所有者を表示する
Get-Process
コマンドのデフォルト出力には、ProcessOwner
属性が表示されません。しかし、特定のプロセスを終了する必要がある場合、この情報は貴重です。
-IncludeUserName
パラメーターを使用して、出力に ProcessOwner
属性を含めることができます。
Get-Process -Name notepad -IncludeUserName
コマンド Get-Process -Name notepad -IncludeUserName
は、出力にプロセス所有者のユーザー名を含めることで、Get-Process
のデフォルトの動作を拡張します。-IncludeUserName
パラメーターは、特定のプロセスを実行しているユーザーを識別する必要がある場合に重要で、特にマルチユーザー環境やトラブルシューティングの際に重要です。
このコマンドは、プロセスの所有権に関して特に可視性を高めます。
出力:
結論
この包括的なガイドは、システムプロセスの管理と監視における PowerShell の力と柔軟性を明らかにしました。私たちは、すべての実行中のプロセスのリストを示すことから特定のプロセスを特定し、特定のプロセス属性の抽出に至るまで、Get-Process
コマンドレットの実用的な応用を掘り下げました。
この記事では、複数のプロセスを同時に処理する PowerShell の巧妙さと、プロセス所有権のようなユーザー中心の情報を統合する容易さも紹介しました。
Get-Process
コマンドレットの統合は、プロセス管理の分野における PowerShell の堅牢さと適応性を際立たせ、Windows 環境内でプロセスを効果的に監視、分析、管理するための多様なツールをシステム管理者に提供します。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.