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.*" }
说明
-----------
此命令获取 ProcessName 属性以字母“p”开头的进程。通过此匹配运算符,您可以在 Where 子句中使用正则表达式。
示例 4
C:\PS>get-process -name svchost | where-object {$True}
说明
-----------
此命令列出名为“svchost”的所有进程。
Where-Object cmdlet 对脚本块进行评估(脚本块通常包含对管道 ($_) 中的当前对象的引用),并将结果强制转换为布尔类型:True 或 False。如果结果为“True”,则返回该对象。否则,将丢弃该对象。
在本例中,脚本块仅返回 True,因此将返回所有对象。