【初心者向け】PowerShellのGet-Processコマンド徹底解説|現在のプロセスを一覧・操作・フィルタする方法

プログラミング・IT

Windowsで動作中のアプリケーションやサービスを確認したいとき、「タスクマネージャー」を開くのが一般的です。

しかし、PowerShellのGet-Processコマンドを使えば、もっと効率的に、もっと細かく、スクリプトで自由自在にプロセス管理が可能になります。

この記事では、PowerShell初心者向けに、Get-Processの基本的な使い方から、特定のプロセス取得・メモリ使用量の確認・停止コマンドとの連携までを具体例付きでわかりやすく解説します。

スポンサーリンク

Get-Processとは?

Get-Processは、現在Windowsで実行中のプロセス一覧を取得できるPowerShellの標準コマンドレットです。

タスクマネージャーのような情報を、コマンドラインで確認・処理できます。

Get-Process

これだけで、起動中のすべてのプロセス名・ID・CPU時間・メモリ使用量などが一覧で表示されます。

エイリアス(別名)として、psgpsも使用できます:

ps  # Get-Processと同じ

基本的な使い方

全プロセスの取得:

Get-Process

出力例:

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    195      15     7716      24832       0.00   2760   1 ApplicationFrameHost
    402      27    24472      40088       3.33   7196   1 chrome
    367      23    21760      38064       1.41   8028   1 chrome
    ...

表の各列は以下の情報を示しています:

  • Handles:オープンファイルなどのリソースハンドル数
  • NPM(K):非ページメモリ使用量
  • PM(K):ページメモリ使用量
  • WS(K):ワーキングセット(実際のメモリ使用量)
  • CPU(s):CPU使用時間(秒)
  • Id:プロセスID
  • SI:セッションID
  • ProcessName:プロセス名

一覧表示をテーブル形式に:

Get-Process | Format-Table -AutoSize

これで、ターミナルの幅に合わせて見やすく表示されます。

プロセスの詳細情報を表示:

Get-Process | Format-List *

この命令は、各プロセスのすべてのプロパティを詳細に表示します。

特定のプロセスを指定して取得する

プロセス名を指定することで、必要な情報だけを取得できます。

Get-Process notepad

複数のプロセスを指定することも可能:

Get-Process chrome, explorer

ワイルドカードを使用:

Get-Process edge*

これは「edge」で始まるすべてのプロセスを取得します。

プロセスIDで指定:

Get-Process -Id 1234

リモートコンピュータのプロセスを取得:

Get-Process -ComputerName Server01

リモートコンピュータへのアクセス権限が必要です。

プロセス情報のフィルタ・並べ替え

メモリ使用量の多い順に並べる:

Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10

これで、メモリを最も多く使用している10個のプロセスが表示されます。

特定のプロセスだけ表示(Where-Object使用):

Get-Process | Where-Object { $_.CPU -gt 100 }

CPU使用時間が100秒を超えるプロセスのみを表示します。

特定のプロパティだけを表示:

Get-Process | Select-Object Name, Id, CPU, WorkingSet

PowerShellプロセスを除外する:

Get-Process | Where-Object { $_.ProcessName -ne "powershell" }

メモリやCPU使用率の確認方法

各プロセスのメモリ使用量(MB単位)を表示:

Get-Process | Select-Object Name, @{Name="MemoryMB";Expression={"{0:N2}" -f ($_.WorkingSet / 1MB)}}

出力例:

Name                                MemoryMB
----                                --------
ApplicationFrameHost                24.25
chrome                              218.56
...

CPU使用時間(秒)を表示:

Get-Process | Select-Object Name, CPU

よりわかりやすい形式でのメモリとCPU表示:

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, 
@{Name="CPU(s)";Expression={"{0:N2}" -f $_.CPU}},
@{Name="Memory(MB)";Expression={"{0:N2}" -f ($_.WorkingSet / 1MB)}}

これにより、CPU使用が最も多い5つのプロセスが、わかりやすい形式で表示されます。

Stop-Processとの組み合わせ

Get-Processで取得したプロセスを、Stop-Processで強制終了できます。

例:メモ帳(notepad)を終了させる

Stop-Process -Name notepad

または、IDを使って:

Stop-Process -Id 1234

安全に停止するためのプロンプト表示:

Get-Process notepad | Stop-Process -Confirm

これにより、本当に停止してもよいか確認メッセージが表示されます。

実行中のすべてのChrome(または他のブラウザ)を一括終了:

Get-Process chrome | Stop-Process

※権限が必要な場合は、PowerShellを「管理者として実行」してください。

よくあるエラーと対処法

エラー内容原因対処法
Cannot find a process with the name指定したプロセスが存在しない正しいプロセス名か確認する(大文字小文字は無視される)
Access is denied権限不足PowerShellを管理者として起動
Process with Id is not runningプロセスがすでに終了している最新のプロセス一覧で再確認
Multiple processes with name found同名の複数のプロセスが存在するプロセスIDを使用するか、全て取得して処理

管理者権限で実行する:

Start-Process powershell -Verb RunAs

これで管理者権限の新しいPowerShellウィンドウが開きます。

高度な使用例

プロセス情報をCSVファイルに出力:

Get-Process | Export-Csv -Path "processes.csv" -NoTypeInformation

ループでプロセスを監視:

while ($true) {
    $memory = Get-Process chrome | Measure-Object WorkingSet -Sum
    "$([DateTime]::Now) - Chrome memory: $("{0:N2}" -f ($memory.Sum / 1GB)) GB"
    Start-Sleep -Seconds 10
}

10秒ごとにChromeのメモリ使用量を表示し続けます。

特定のプロセスがいつ起動したかを確認:

Get-Process chrome | Select-Object Name, StartTime

プロセスのパスを確認:

Get-Process chrome | Select-Object Name, Path

まとめ

PowerShellのGet-Processは、現在実行中のプロセスを確認・分析・管理するための非常に便利なツールです。

おさらいポイント:

  • Get-Processで現在のプロセスを確認
  • プロセス名やIDで絞り込み可能
  • メモリやCPU使用量の分析に活用
  • Stop-Processと連携すれば簡単にプロセス終了も可能
  • 結果をCSVやテキストファイルに出力して記録可能

GUIのタスクマネージャーでは見えにくい情報も、PowerShellならスクリプトで自動化・ログ化できるのが最大の魅力です。

業務効率化やトラブル対応の第一歩として、ぜひ活用してみてください!

活用シーン:

  1. システム監視スクリプトの作成
  2. メモリリークがあるプロセスの特定
  3. 定期的にリソースを大量消費するプロセスの監視
  4. システム起動時のパフォーマンス分析
  5. 不要なバックグラウンドプロセスの特定と停止

PowerShellを使いこなすことで、Windows管理の幅がぐっと広がります。

Get-Processはその入り口として、最初に習得しておくべき便利なコマンドレットの一つです。

コメント

タイトルとURLをコピーしました