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

  1. PowerShell で実行中のプロセスのリストを表示するために Get-Process コマンドレットを使用する
  2. 結論
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 はこれを表示用にテーブル形式に整形します。この表形式は、情報を明確で読みやすい方法で提示するために設計されています。

テーブルには通常、いくつかの主要な列が含まれています:

  1. Id: この列はプロセス識別子(PID)を示し、各プロセスに割り当てられた固有の数値ラベルです。PID は特定のプロセスを一意に識別し、管理する上で重要です。
  2. ProcessName: これはプロセスを開始した実行可能ファイルの名前です。特に有名なアプリケーションの場合、プロセスを簡単に認識するのに役立ちます。
  3. CPU(s): ここでは、プロセスが消費した CPU 時間の量が表示されます。これは秒単位で測定され、システム性能に影響を与える可能性のある重要な CPU リソースを使用しているプロセスを評価するために重要です。
  4. PM(K): これはキロバイト単位の Paged Memory を表します。ディスクにページングできるプロセスが使用しているメモリのサイズを示します。このメトリックは、プロセスのメモリ使用量を監視するために重要であり、パフォーマンスチューニングとリソース管理には不可欠です。

特定のプロセスの情報を取得する

PowerShell を使用して特定のプロセスに関する情報を取得する際、いくつかの構文オプションがあります。Get-Process -Name processNameGet-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 に NotePadOutlook という複数のプロセスの詳細を同時に取得するよう指示します。このコマンドは、いくつかの特定のプロセスを監視する必要があるときに便利です。

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).CPUNotePad プロセスの CPU 使用情報を取得します。これらのコマンドは、プロセスオブジェクトから特定のデータポイントを抽出する方法を示しています。

出力:

プロセスの CPU を取得する

プロセスの所有者を表示する

Get-Process コマンドのデフォルト出力には、ProcessOwner 属性が表示されません。しかし、特定のプロセスを終了する必要がある場合、この情報は貴重です。

-IncludeUserName パラメーターを使用して、出力に ProcessOwner 属性を含めることができます。

Get-Process -Name notepad -IncludeUserName

コマンド Get-Process -Name notepad -IncludeUserName は、出力にプロセス所有者のユーザー名を含めることで、Get-Process のデフォルトの動作を拡張します。-IncludeUserName パラメーターは、特定のプロセスを実行しているユーザーを識別する必要がある場合に重要で、特にマルチユーザー環境やトラブルシューティングの際に重要です。

このコマンドは、プロセスの所有権に関して特に可視性を高めます。

出力:

Get-Process IncludeUserName

結論

この包括的なガイドは、システムプロセスの管理と監視における PowerShell の力と柔軟性を明らかにしました。私たちは、すべての実行中のプロセスのリストを示すことから特定のプロセスを特定し、特定のプロセス属性の抽出に至るまで、Get-Process コマンドレットの実用的な応用を掘り下げました。

この記事では、複数のプロセスを同時に処理する PowerShell の巧妙さと、プロセス所有権のようなユーザー中心の情報を統合する容易さも紹介しました。

Get-Process コマンドレットの統合は、プロセス管理の分野における PowerShell の堅牢さと適応性を際立たせ、Windows 環境内でプロセスを効果的に監視、分析、管理するための多様なツールをシステム管理者に提供します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.