Where-Object
建立篩選器來控制即將沿命令管線傳遞哪些物件。
語法
Where-Object [-FilterScript] <scriptblock> [-InputObject <psobject>] [<CommonParameters>]
描述
Where-Object Cmdlet 會從傳遞給它的一組物件中選取物件。它會使用指令碼區塊當做篩選器並評估每個物件的指令碼區塊。如果評估的結果是 True,就會傳回此物件。如果評估的結果不是 True,就會忽略此物件。
參數
-FilterScript <scriptblock>
指定用來篩選物件的指令碼區塊。請以大括號 ( {} ) 括住指令碼區塊。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-InputObject <psobject>
指定要篩選的物件。您也可經由管道將物件輸出至 Where-Object。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByValue) |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.Management.Automation.PSObject 您可經由管道將要篩選的物件輸出至 Where-Object。 |
輸出 |
範例 1
C:\PS>get-service | where-object {$_.Status -eq "Stopped"}
描述
-----------
這個命令會取得目前已停止的所有服務清單。"$" 符號代表傳遞給 Where-Object Cmdlet 的每個物件。
範例 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 屬性的處理序。比對運算子可讓您在 Where 子句中使用規則運算式。
範例 4
C:\PS>get-process -name svchost | where-object {$True}
描述
-----------
這個命令會列出名為 "svchost" 的所有處理序。
Where-Object Cmdlet 會評估指令碼區塊 (通常包含目前在管線 ($_) 中之物件的參考),並將結果轉換為布林值型別:Ture 或 False。如果結果是 True,就會傳回此物件。否則,就會捨棄此物件。
在這個範例中,指令碼區塊傳回的正是 True,因此系統將傳回所有物件。