Get-Processコマンドレットで、実行中のプロセスを表示する
PowerShellで実行中のプロセスの一覧を取得するために、Get-Processコマンドが利用できます。
Get-Processコマンドを利用すると、以下のようにプロセス名やプロセスIDなどのパラメータを取得できます。
このGet-Processコマンドのエイリアスは、gpsとpsです。
Linuxライクにも使えて便利ですね。
PS C:\Users\yuki> Get-Process
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
393 23 16348 30068 0.19 7836 2 ApplicationFrameHost
569 28 65592 75100 5,603.98 10060 0 audiodg
308 35 33364 82540 1.48 1308 2 Code
また、Get-Processでは以下のように、プロセスIDやプロセス名を使用して、表示するプロセスを指定することができます。
これは通常、実行中の既知のプロセスを取得するために、一致するプロセスが見つからないときはエラーが発生します。
#プロセス名でプロセスを指定
PS C:\Users\yuki> Get-Process -Name code
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
821 44 38760 87176 12.59 1364 3 Code
245 21 15188 27940 0.19 4216 3 Code
531 82 158264 180296 37.78 4984 3 Code
657 29 180360 197764 8.73 7232 3 Code
400 51 43332 70696 13.98 10328 3 Code
438 20 9688 25920 1.11 10820 3 Code
311 35 33060 51808 1.48 11996 3 Code
227 16 6896 14048 0.09 14204 3 Code
#IDでプロセスを指定
PS C:\Users\yuki> Get-Process -Id 4216
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
245 21 15188 27948 0.19 4216 3 Code
ちなみに、このプロセス名の検索には以下のようにワイルドカードを用いることもできます。
この例では、note*を指定することによって、notepadプロセスの抽出に成功しています。
PS C:\Users\yuki> Get-Process -Name note*
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
290 17 4068 18728 0.17 4504 3 notepad
Stop-Processコマンドで任意の文字列を停止する
また、Stop-Processコマンドを用いることで、プロセス名やプロセスIDを指定して、特定のプロセスを停止することができます。
Stop-Processコマンドのエイリアスはkillとsppsです。
killコマンドはBashと同じなので、非常に使いやすいですね。
以下の例では、Stop-Processを用いて、notepadプロセスを停止しています。
#notepadプロセスの実行を確認
PS C:\Users\yuki> Get-Process -Name note*
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
290 17 4068 18728 0.17 4504 3 notepad
#notepadプロセスを停止
PS C:\Users\yuki> Stop-Process -Name notepad
#再度notepadプロセスを確認すると、プロセスが見つからずにエラーがかえってくる
PS C:\Users\yuki> Get-Process -Name notepad
Get-Process : 名前 "notepad" のプロセスが見つかりません。プロセス名を確認し、コマンドレットを再度呼び出してください。
発生場所 行:1 文字:1
+ Get-Process -Name notepad
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (notepad:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
また、このフィルターの部分にコマンド出力を利用することで、より複雑な処理を実行させることが可能になります。
例えば、公式ドキュメントには、以下のワンライナーで、「応答なし」状態のプロセスをすべて停止する方法が紹介されていました。
Get-Process | Where-Object -FilterScript {$_.Responding -eq $false} | Stop-Process
応答なしプロセスをサクッと停止できるのは結構便利ですね。
いちいちタスクマネージャーからプロセスを目視で探す手間がなくなります。
まとめ
今回は、PowerShellのプロセスを確認するGet-Processコマンドと、任意のプロセスを停止するStop-Processコマンドについてまとめました。
PowerShellの多くのコマンドには、使い慣れたBashのコマンドと同じエイリアスが割り当てられており、非常に快適に使えるなと感じています。
参考
今回紹介したコマンド
名前
Get-Process
構文
Get-Process [[-Name] <string[]>] [<CommonParameters>]
Get-Process [[-Name] <string[]>] [<CommonParameters>]
Get-Process [<CommonParameters>]
Get-Process [<CommonParameters>]
Get-Process [<CommonParameters>]
Get-Process [<CommonParameters>]
エイリアス
gps
ps
名前
Stop-Process
構文
Stop-Process [-Id] <int[]> [<CommonParameters>]
Stop-Process [<CommonParameters>]
Stop-Process [-InputObject] <Process[]> [<CommonParameters>]
エイリアス
spps
kill