PowerShellでコマンドを実行した結果は「オブジェクト」になる。このため、コマンドの実行結果を利用しやすい。オブジェクトの利用で活躍するのがパイプライン(以下パイプ)である。
IPアドレスを取得するコマンド「Get-NetIPAddress」で試してみよう。このコマンドをそのまま実行すると、ローカルコンピュータが持つすべての物理的、論理的なネットワークインタフェースのIPアドレス(IPv4およびIPv6)とその関連情報がずらっと表示される。その中から特定の情報を抽出したい場合にパイプが有効だ。
Get-NetIPAddress | Select-Object IPAddress
と実行してみよう。「|」がパイプだ▼。すると、IPアドレスだけが表示される(図1)。
パイプは前のコマンドの結果を後ろのコマンドに引き渡す際に使う。ここでは、Get-NetIPAddressの結果を、「Select-Object」に渡している。Select-Objectは受け取ったオブジェクトの中から必要なプロパティのみを抽出する▼コマンドだ。以下のように複数のプロパティも指定できる。
Get-NetIPAddress | Select-Object InterfaceAlias, IPAddress
条件に合うオブジェクトを取り出すこともできる。「Where-Object」コマンドを使う。
Get-NetIPAddress | Where-Object InterfaceAlias -like *ローカル*
とすると、出力結果から条件に合致するものを検索して抽出できる(図2)。さらにIPAddressのみを表示するなら、
Get-NetIPAddress | Where-Object InterfaceAlias -like *ローカル* | Select-Object IPAddress
という具合に、複数のパイプを使用して連結すればよい。ある程度複雑な処理でも1行で記述できる。
日本語キーボードなら、[Shift]キーを押しながら[\]キーを押すと入力できる。
プロパティを「列」だと考えれば、Select-ObjectはSQLのSELECTコマンドに相当する。