添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
乖乖的绿豆  ·  Search·  3 月前    · 
酒量大的饭卡  ·  5 User parameters·  3 月前    · 
急躁的打火机  ·  将 Windows Admin ...·  3 月前    · 

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>]
    
    Where-Object   
    [-FilterScript] <scriptblock>   
    [-InputObject <psobject>]   
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]   
    -Match   
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]  
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]   
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]   
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]   
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]   
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    Where-Object   
    [-Property] <string>   
    [[-Value] <Object>]   
    -Like   
    [-InputObject <psobject>]    
    [<CommonParameters>]
    
    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参数后面使用正则表达式。

       纠错/补充