オブジェクトを加工する
次は、パイプラインを流れるオブジェクトに手を加える方法だ。たとえば、Sort-Objectコマンドを使えば、オブジェクトを並べ替えられる。しかし、実際には、もう少し複雑な処理をオブジェクトに加えたいことがあるだろう。このような場合には、ForEach-Objectコマンドを使って、オブジェクト1つに対する処理を記述する。
情報出力コマンド | Where-Object {フィルタ条件} | ForEach-Object { 処理手続き }
とする。ForEach-Objectは、パイプラインを通してやってくるオブジェクトの配列をひとつひとつ処理して出力するものだ。出力はスクリプトブロック内で最後に計算された値が使われる。
●ForEach-Object
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-7.6
実際の処理としてはWhere-ObjectとForEach-Objectは逆でもかまわない。こういう場合の定石として、先に必要なオブジェクトを選んでおいて、処理するオブジェクト数を減らしたほうが効率がよい。
次の例は、LAN内のIPv6アドレスのうち、FFで始まるIPアドレスの先頭4バイトを列挙するものだ。
Get-NetNeighbor | Where-Object IPAddress -like "ff*" | ForEach-Object {$_.IPAddress.substring(0,4) } | Sort-Object -Unique
最後の「Sort-Object -Unique」で結果を並べ替え、重複する値を削除している。
オブジェクトを1つ1つ処理する場合には、ForEach-Objectコマンドを使うのがパターンである。
PowerShellを使った情報表示には、こうした基本パターンがある。これをとっかかりに考えると、自分がやりたいことをどのように記述すればいいのかが見えてくる。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第537回
PC
PowerShellをシェルとして使うためのポイントを解説 -
第536回
PC
Microsoft製のコンソールエディタMS-Editが2.0になり、文法ハイライト機能が搭載 -
第535回
PC
WSLコンテナーのプレビューを試す 今年はWSLに動きがありそうだ -
第534回
PC
Windows 11におけるアプリインストーラーとwinget -
第533回
PC
PCの世界ではすっかり存在感が薄くなった光学メディアをあらためて整理 -
第532回
PC
モニターの情報が含まれる「VESA EDID」をWindowsで調べる方法 -
第531回
PC
Windowsのコンソール上でUnix/Linuxの標準的なコマンドを動かす「Windows CoreUtils」 -
第530回
PC
Windows 11でタスクバーの位置の移動機能が復活するのは結局どうなった? プレビュー版の現状を見る -
第529回
PC
Windowsの標準スクリプト言語であるPowerShellの現状をあらためて紹介する -
第528回
PC
Windows 11の標準機能でメモリに問題がないかを診断する - この連載の一覧へ











