Where-Object
どのオブジェクトがコマンド パイプラインを使用して渡されるかを制御するフィルターを作成します。
構文
Where-Object [-FilterScript] <scriptblock> [-InputObject <psobject>] [<CommonParameters>]
説明
Where-Object コマンドレットは、渡されたオブジェクトのセットからオブジェクトを選択します。このコマンドレットは、スクリプト ブロックをフィルターとして使用し、各オブジェクトのスクリプト ブロックを評価します。評価の結果が True の場合、オブジェクトが返されます。評価の結果が True でない場合、オブジェクトは無視されます。
パラメーター
-FilterScript <scriptblock>
オブジェクトのフィルターに使用するスクリプト ブロックを指定します。スクリプト ブロックは中かっこ ( {} ) で囲みます。
必須 |
true |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-InputObject <psobject>
フィルター処理するオブジェクトを指定します。パイプを使用してオブジェクトを Where-Object に渡すこともできます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
true (ByValue) |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.Management.Automation.PSObject パイプを使用して、フィルターするオブジェクトを Where-Object に渡すことができます。 |
出力 |
例 1
C:\PS>get-service | where-object {$_.Status -eq "Stopped"}
説明
-----------
このコマンドは、現在停止しているすべてのサービスの一覧を取得します。"$" シンボルは、Where-Object コマンドレットに渡された各オブジェクトを表します。
例 2
C:\PS>get-process | where-object {$_.workingset -gt 25000*1024}
説明
-----------
このコマンドは、ワーキング セットが 25,000 KB より大きいプロセスを一覧表示します。WorkingSet プロパティの値はバイト単位で格納されるため、25,000 の値に 1,024 を乗算します。
例 3
C:\PS>get-process | where-object { $_.ProcessName -match "^p.*" }
説明
-----------
このコマンドは、文字 "p" で始まる ProcessName プロパティを持つプロセスを取得します。match 演算子を使用すると、Where 句内で正規表現を使用できます。
例 4
C:\PS>get-process -name svchost | where-object {$True}
説明
-----------
このコマンドは、"svchost" という名前のプロセスをすべて一覧表示します。
Where-Object コマンドレットはスクリプト ブロックを評価します。このスクリプト ブロックには、現在パイプラインにあるオブジェクトへの参照 ($_) が通常含まれており、where-object コマンドレットは評価の結果をブール型 (True または False) にキャストします。結果が True の場合、オブジェクトが返されます。それ以外の場合は、破棄されます。
ここでは、スクリプト ブロックはそのまま True を返すため、すべてのオブジェクトが返されます。