[FAQ CENTER トップ]
[Powershell FAQ トップへ]



【Powershell】Get-Processの戻り値をForEach-objectでループ処理する



更新日:2020/05/23


プロセスの名前一覧を取得する


Powershell でプロセス名一覧を取得しようとしています。純粋にプロセス名のみの取得が必要です。メモリ消費量などの情報は不要です。
Get-Process コマンドの実行例は以下の通りです。



PS C:\> Get-Process

Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
226 20 3464 11988 10.73 12684 1 AppleMobileDeviceProcess
717 40 10932 31764 1.88 11980 1 ApplePhotoStreams
578 36 25712 42084 11.08 6036 1 ApplicationFrameHost
412 26 5856 16016 1.08 11988 1 APSDaemon
154 10 1484 6556 3884 0 armsvc
<以下省略>



tasklist.exe ではプロセス名のみの取得はできませんでした。


C:\>tasklist

イメージ名 PID セッション名 セッション# メモリ使用量
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 K
System 4 Services 0 1,164 K
Secure System 56 Services 0 40,132 K
Registry 104 Services 0 82,416 K
smss.exe 452 Services 0 1,044 K
csrss.exe 648 Services 0 4,228 K
<以下省略>






サンプル


サンプルコードは以下の通りです。必要です。
get-process を実行してプロセスオブジェクトの一覧を取得します。ForEach-Object で各プロセスのプロセス名(ProcessName)のみ取得します。


get-process | ForEach-object {
write-Output $_.ProcessName
}




プロセス一覧をファイルに出力する


さらにプロセス一覧をファイルに出力するには以下のコマンドを実行します。c:\temp\ProcessList.txt に出力されます。



get-process | ForEach-object {
write-Output $_.ProcessName
} | Out-File c:\temp\ProcessList.txt




write-Output を write-host にするとファイルには出力されません。write-host は標準出力に出力関数だからです。

参考:write-host と write-output の違い







[Powershell FAQ トップへ]
[FAQ CENTER トップ]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018