PowerShell 中 Where-Object 的使用方法


Where−Object 或(別名:Where)在 PowerShell 中用於篩選透過管道提供的輸出資料。

我們可以使用兩種方法將Where−Object應用於管道輸入。

  • a. 指令碼方法 -

在這種方法中,我們使用ScriptBlock透過屬性名稱、值和比較運算子來篩選輸出。

Get−Service | Where−Object{($_.StartType −eq 'Automatic') −and ($_.Status −eq 'Stopped')}

您也可以使用別名:Where 代替Where−Object

Get−Service | Where{($_.StartType −eq 'Automatic') −and ($_.Status −eq 'Stopped')}

其他語法 ‘?’(問號)也可以代替Where−Object命令使用。

Get−Service | ?{($_.StartType −eq 'Automatic') −and ($_.Status −eq 'Stopped')}

以上命令將獲取 StartType 為 AUTOMATIC 且狀態為 STOPPED 的服務。

  • b. 比較語句 -

此方法更像是自然語言,它是在 PowerShell 3.0 版本中引入的,在此之前,只有指令碼塊方法。要使用此方法,我們將使用屬性名稱、值和比較語句,但無需指令碼塊,並使用 Property 和 Value 引數。

例如,要篩選 StartType 為 Disabled 的服務的輸出,我們將使用以下程式碼。

Get−Service | Where−Object −Property StartType −EQ −Value Disabled

當您為Where−Object命令提供單個屬性(例如陣列)時,該屬性的值將被視為布林表示式,並且當值長度不為零時,輸出為 true。

例如,

PS C:\> ("Windows","","PowerShell","","Azure") | Where−Object Length
Windows
PowerShell
Azure

類似的命令有:

("Windows","","PowerShell","","Azure") | where{$_.length −gt 0}

或者,

("Windows","","PowerShell","","Azure") | Where−Object Length −GT 0

更新於: 2021年1月25日

2K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.