PowerShell where-object命令

PowerShell where-object命令

PowerShell中的Where-Object根据对象的属性值从集合中选择对象。使用PowerShell 3.0的启动版,可以通过以下两种不同的方式构造Where-Object cmdlet:

  • 比较语句: 随着PowerShell 3.0的启动,我们可以将比较运算符添加为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参数后面使用正则表达式。


目录