【PowerShell】Where-Objectの使い方

こんにちは。
けいぞうです。

今回はPowerShellのWhere-Objectの使い方についてです。

Where-Objectの使い方

構文

Where-Objectの構文は以下です。

任意のコマンドレット | Where-Object { $_を使用した任意の条件 }

PowerShellでは任意のコマンドレットで取得した値を、パイプラインで区切って次のコマンドレットに渡して処理させることができます。

「$_」 がパイプで繋がれたときに直前のコマンドで取得された内容になります。

例文

Where-Objectを使った例文を以下に示します。

Get-ChildItem | Where-Object { $_.CreationTime -ge "2020/01/01 00:00:00" }

上記の例ではGet-ChildItemで取得したものに対して、CreationTimeが「2020/01/01 00:00:00」より新しいものに絞り込みを行っています。

Where-Objectのエイリアス

PowerShellにおいてWhere-Objectには2つのエイリアス(別名のようなもの)が存在しているので、先ほどの例文は以下のように書き換えることが可能です。

Get-ChildItem | where { $_.CreationTime -ge "2020/01/01 00:00:00" }
Get-ChildItem | ? { $_.CreationTime -ge "2020/01/01 00:00:00" }

「where」または「?」がWhere-Objectのエイリアスになります。

コーディング規約とかが無ければ、?で書いた方がタイピングの量も減って良いですね。