建立篩選器來控制即將沿命令管線傳遞哪些物件。

語法

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,因此系統將傳回所有物件。









目錄