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
广告