Windowsで動作中のアプリケーションやサービスを確認したいとき、「タスクマネージャー」を開くのが一般的です。
しかし、PowerShellのGet-Process
コマンドを使えば、もっと効率的に、もっと細かく、スクリプトで自由自在にプロセス管理が可能になります。
この記事では、PowerShell初心者向けに、Get-Process
の基本的な使い方から、特定のプロセス取得・メモリ使用量の確認・停止コマンドとの連携までを具体例付きでわかりやすく解説します。
Get-Processとは?

Get-Process
は、現在Windowsで実行中のプロセス一覧を取得できるPowerShellの標準コマンドレットです。
タスクマネージャーのような情報を、コマンドラインで確認・処理できます。
Get-Process
これだけで、起動中のすべてのプロセス名・ID・CPU時間・メモリ使用量などが一覧で表示されます。
エイリアス(別名)として、ps
やgps
も使用できます:
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
よくあるエラーと対処法
エラー内容 | 原因 | 対処法 |
---|---|---|
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ならスクリプトで自動化・ログ化できるのが最大の魅力です。
業務効率化やトラブル対応の第一歩として、ぜひ活用してみてください!
活用シーン:
- システム監視スクリプトの作成
- メモリリークがあるプロセスの特定
- 定期的にリソースを大量消費するプロセスの監視
- システム起動時のパフォーマンス分析
- 不要なバックグラウンドプロセスの特定と停止
PowerShellを使いこなすことで、Windows管理の幅がぐっと広がります。
Get-Process
はその入り口として、最初に習得しておくべき便利なコマンドレットの一つです。
コメント