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+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告