PowerShell中的Where-Object
根据对象的属性值从集合中选择对象。使用PowerShell 3.0的启动版,可以通过以下两种不同的方式构造Where-Object
cmdlet:
Where-Object
命令中的参数。Where-Object
cmdlet返回脚本块语句为true
的所有对象。语法1
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] [-EQ] [<CommonParameters>]
语法2
Where-Object [-FilterScript] <scriptblock> [-InputObject <psobject>] [<CommonParameters>]
语法3
Where-Object [-Property] <string> [[-Value] <Object>] -Match [-InputObject <psobject>] [<CommonParameters>]
语法4
Where-Object [-Property] <string> [[-Value] <Object>] -CEQ [-InputObject <psobject>] [<CommonParameters>]
语法5
Where-Object [-Property] <string> [[-Value] <Object>] -NE [-InputObject <psobject>] [<CommonParameters>]
语法6
Where-Object [-Property] <string> [[-Value] <Object>] -CNE [-InputObject <psobject>] [<CommonParameters>]
语法7
Where-Object [-Property] <string> [[-Value] <Object>] -GT [-InputObject <psobject>] [<CommonParameters>]
语法8
Where-Object [-Property] <string> [[-Value] <Object>] -CGT [-InputObject <psobject>] [<CommonParameters>]
语法9
Where-Object [-Property] <string> [[-Value] <Object>] -Like [-InputObject <psobject>] [<CommonParameters>]
语法10
Where-Object [-Property] <string> [[-Value] <Object>] -CLike [-InputObject <psobject>] [<CommonParameters>]
以下是此cmdlet中使用的参数:
-Property - 此参数用于指定对象属性的名称。它是可选的,并在Windows PowerShell的3.0版本中引入。
-Value - 此参数用于指定属性的值。与比较参数一起使用时,它接受通配符(*
)。它也是在PowerShell 3.0版中引入的。
-InputObject - 此参数用于指定要过滤的对象。我们还可以将对象通过管道传递给Where-Object cmdlet。
-EQ - 如果属性的值与指定的值相同,则Where-Object
cmdlet使用此参数获取对象。
-FilterScript - 此参数用于指定用于过滤对象的脚本块。必须将脚本块放在大括号{}
中。
-FilterScript - 如果属性的值与给定的正则表达式匹配,则Where-Object
cmdlet使用此参数获取对象。
-CEQ - 如果属性的值与指定的值相同,则Where-Object
cmdlet使用此参数获取对象。
-NE - 如果属性的值与指定的值不同,则Where-Object
cmdlet使用此参数获取对象。
-CNE - 如果属性的值与指定的值不同,则Where-Object
cmdlet使用此参数获取对象。此操作区分大小写。
-GT - 如果属性的值大于给定值,则Where-Object cmdlet使用此参数获取对象。
-CGT - 如果属性的值大于给定值,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-LT - 如果属性的值小于给定值,则Where-Object cmdlet使用此参数获取对象。
-CLT - 如果属性的值小于给定值,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-GE - 如果属性的值大于或等于给定值,则Where-Object cmdlet使用此参数获取对象。
-CGE - 如果属性的值大于或等于给定值,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-LE - 如果属性的值小于或等于给定值,则Where-Object cmdlet使用此参数获取对象。
-CLE - 如果属性的值小于或等于给定值,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-Like - 如果属性的值与包含通配符的值匹配,则Where-Object cmdlet使用此参数获取对象。
-CLike - 如果属性的值与包含通配符的值匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-NotLike - 如果属性的值与包含通配符的值不匹配,则Where-Object cmdlet使用此参数获取对象。
-CNotLike - 如果属性的值与包含通配符的值不匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-CMatch - 如果属性的值与给定的正则表达式匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写
-NotMatch - 如果属性的值与给定的正则表达式不匹配,则Where-Object cmdlet使用此参数获取对象。如果输入为标量,则匹配的值将保存或存储在$Matches自动变量中。
-CNotMatch - 如果属性的值与给定的正则表达式不匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-Contains - 如果对象的属性值与给定值匹配,则Where-Object cmdlet使用此参数从集合中获取对象。
-CContains - 如果对象的属性值中的项与给定值匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-NotContains - 如果对象的属性值中的任何项均与给定值不匹配,则Where-Object cmdlet使用此参数获取对象。
-CNotContains - 如果对象的属性值中的项与给定值不匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-In - 如果属性的值与任何给定值匹配,则Where-Object cmdlet使用此参数获取对象。
-CIn - 如果属性的值与任何给定值匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-NotIn - 如果属性的值与任何给定值都不匹配,则Where-Object cmdlet使用此参数获取对象。
-CNotIn - 如果属性的值与任何给定值都不匹配,则Where-Object cmdlet使用此参数获取对象。此操作区分大小写。
-Is - 如果属性的值是给定.NET Framework类型的实例,则Where-Object cmdlet使用此参数获取对象。您必须将类型的名称括在方括号中。
-IsNot - 如果属性的值不是给定.NET Framework类型的实例,则Where-Object cmdlet使用此参数获取对象。
示例1: 获取停止的服务
此示例中的两个命令都获取当前停止的所有服务的列表。 第一个命令使用脚本块的格式,第二个命令使用比较语句的格式。
示例2: 根据进程名称获取进程
PS C:\> get-service | where-object {$_.Name -Match "^Wp.*"} Status Name DisplayName ------ ---- ----------- Stopped WpcMonSvc 家长控制 Stopped WPDBusEnum Portable Device Enumerator Service Running WpnService Windows 推送通知系统服务 Running WpnUserService_... Windows Push Notifications User Ser... Stopped wpscloudsvr WPS Office Cloud Service PS C:\> get-service | where-object {$_.DisplayName -Match "^Wp.*"} Status Name DisplayName ------ ---- ----------- Stopped wpscloudsvr WPS Office Cloud Service
本示例中的命令获取以Wp
字母开头的服务的名称。 -Match
参数后面使用正则表达式。