Where-Object

根据集合的属性值从集合中选择对象。

语法

EqualSet (默认值)

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    [-InputObject <PSObject>]
    [-EQ]
    [<CommonParameters>]

ScriptBlockSet

Where-Object
    [-FilterScript] <ScriptBlock>
    [-InputObject <PSObject>]
    [<CommonParameters>]

MatchSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -Match
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CEQ
    [-InputObject <PSObject>]
    [<CommonParameters>]

NotEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -NE
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveNotEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CNE
    [-InputObject <PSObject>]
    [<CommonParameters>]

GreaterThanSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -GT
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveGreaterThanSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CGT
    [-InputObject <PSObject>]
    [<CommonParameters>]

LessThanSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -LT
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveLessThanSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CLT
    [-InputObject <PSObject>]
    [<CommonParameters>]

GreaterOrEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -GE
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveGreaterOrEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CGE
    [-InputObject <PSObject>]
    [<CommonParameters>]

LessOrEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -LE
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveLessOrEqualSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CLE
    [-InputObject <PSObject>]
    [<CommonParameters>]

LikeSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -Like
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveLikeSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CLike
    [-InputObject <PSObject>]
    [<CommonParameters>]

NotLikeSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -NotLike
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveNotLikeSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CNotLike
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveMatchSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CMatch
    [-InputObject <PSObject>]
    [<CommonParameters>]

NotMatchSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -NotMatch
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveNotMatchSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CNotMatch
    [-InputObject <PSObject>]
    [<CommonParameters>]

ContainsSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -Contains
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveContainsSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CContains
    [-InputObject <PSObject>]
    [<CommonParameters>]

NotContainsSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -NotContains
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveNotContainsSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CNotContains
    [-InputObject <PSObject>]
    [<CommonParameters>]

InSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -In
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveInSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CIn
    [-InputObject <PSObject>]
    [<CommonParameters>]

NotInSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -NotIn
    [-InputObject <PSObject>]
    [<CommonParameters>]

CaseSensitiveNotInSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -CNotIn
    [-InputObject <PSObject>]
    [<CommonParameters>]

IsSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -Is
    [-InputObject <PSObject>]
    [<CommonParameters>]

IsNotSet

Where-Object
    [-Property] <String>
    [[-Value] <Object>]
    -IsNot
    [-InputObject <PSObject>]
    [<CommonParameters>]

Not

Where-Object
    [-Property] <String>
    -Not
    [-InputObject <PSObject>]
    [<CommonParameters>]

说明

Where-Object cmdlet 从传递给它的对象的集合中选择具有特定属性值的对象。 例如,可以使用 Where-Object cmdlet 来选择在特定日期之后创建的文件、具有特定 ID 的事件或使用特定版本的 Windows 的计算机。

从 Windows PowerShell 3.0 开始,可通过两种不同的方法来构造 Where-Object 命令。

  • 脚本块语法。 可以使用脚本块来指定属性名称、比较运算符和属性值。 Where-Object 返回脚本块语句为 true 的所有对象。

    例如,以下命令获取 PriorityClass 属性的值等于 Normal的进程。

    Get-Process | Where-Object {$_.PriorityClass -eq "Normal"}

    所有 PowerShell 比较运算符都以脚本块格式有效。 有关详细信息,请参阅 about_Comparison_Operators

  • 简化的语法。 若要启用精简语法, Where-Object 请包含 31 个表示比较运算符的开关参数。 简化的语法比脚本块语法更易于读取和写入。 可以将其中一个开关参数与 PropertyValue 参数组合在一起,以创建一个命令,以便根据对象的属性值筛选对象。

    例如,以下命令还获取具有优先级类 Normal的进程。 这些命令是等效的,可以互换使用它们。

    Get-Process | Where-Object -Property PriorityClass -Value Normal -EQ

    Get-Process | Where-Object PriorityClass -EQ Normal

    如示例中所示,参数名称 “属性 ”和 “值 ”是可选的。 Property 参数是映射到位置的位置0参数。 Value 参数是映射到位置的位置1参数。 用于指定比较的 switch 参数可用于任何位置。

    Windows PowerShell 3.0 中引入了简化的语法。 有关详细信息,请参阅 about_Simplified_Syntax

将单个属性提供给该属性Where-Object时,该 cmdlet 会将属性的值视为布尔表达式。 当属性的 Length 值不为零时,表达式的计算结果为 $true。 例如:('hi', '', 'there') | Where-Object Length

前面的示例在功能上等效于:

  • ('hi', '', 'there') | Where-Object Length -GT 0
  • ('hi', '', 'there') | Where-Object { $_.Length -gt 0 }

有关 PowerShell 如何评估布尔值的详细信息,请参阅 about_Booleans

示例

示例 1:获取已停止的服务

这些命令获取已停止的所有服务的列表。 $_ 自动变量表示传递给 Where-Object cmdlet 的每个对象。

第一个命令使用脚本块格式,第二个命令使用比较语句格式。 这些命令以相同的方式筛选服务并返回相同的输出。 只有语法不同。

Get-Service | Where-Object { $_.Status -eq "Stopped" }
Get-Service | Where-Object Status -EQ "Stopped"

示例 2:基于工作集获取进程

这些命令列出工作集大于 250 兆字节(MB)的进程。 这些命令按相同的方式筛选进程并返回相同的输出。 只有语法不同。

Get-Process | Where-Object { $_.WorkingSet -gt 250MB }
Get-Process | Where-Object WorkingSet -GT 250MB

示例 3:基于进程名称获取进程

这些命令获取以字母 开头的 p 属性值的进程。 运算符 -matchMatch 参数允许使用正则表达式匹配项。

这些命令按相同的方式筛选进程并返回相同的输出。 只有语法不同。

Get-Process | Where-Object { $_.ProcessName -match "^p.*" }
Get-Process | Where-Object ProcessName -Match "^p.*"

示例 4:使用比较语句格式

此示例演示如何使用 Where-Object cmdlet 的新比较语句格式。

第一个命令使用比较语句格式。 它不使用任何别名,并且包括每个参数的名称。

第二个命令是比较命令格式的更自然的使用。 该命令将 where 别名替换为 Where-Object cmdlet 名称,并省略所有可选参数名称。

这些命令按相同的方式筛选进程并返回相同的输出。 只有语法不同。

Get-Process | Where-Object -Property Handles -GE -Value 1000
Get-Process | where Handles -GE 1000

示例 5:基于属性获取命令

此示例演示如何编写返回为 true 或 false 或具有指定属性的任何值的项的命令。 每个示例都显示了命令的脚本块和比较语句格式。

命令按相同的方式筛选输入,并返回相同的输出。 只有语法不同。

# Use Where-Object to get commands that have any value for the OutputType
# property of the command. This omits commands that do not have an OutputType
# property and those that have an OutputType property, but no property value.
Get-Command | Where-Object OutputType
Get-Command | Where-Object { $_.OutputType }
# Use Where-Object to get objects that are containers. This gets objects that
# have the **PSIsContainer** property with a value of $true and excludes all
# others.
Get-ChildItem | Where-Object PSIsContainer
Get-ChildItem | Where-Object { $_.PSIsContainer }
# Finally, use the -not operator (!) to get objects that are not containers.
# This gets objects that do have the **PSIsContainer** property and those
# that have a value of $false for the **PSIsContainer** property.
Get-ChildItem | Where-Object -Not PSIsContainer
Get-ChildItem | Where-Object { !$_.PSIsContainer }

示例 6:使用多个条件

Get-Module -ListAvailable | Where-Object {
    ($_.Name -notlike "Microsoft*" -and $_.Name -notlike "PS*") -and $_.HelpInfoUri
}

此示例演示如何创建具有多个条件的 Where-Object 命令。

此命令获取支持可更新帮助功能的非核心模块。 该命令使用 cmdlet 的 Get-Module 参数来获取计算机上的所有模块。 管道运算符 (|) 将模块发送到 Where-Object cmdlet,该 cmdlet 获取名称不以 MicrosoftPS开头的模块,并具有 HelpInfoURI 属性的值,该属性指示 PowerShell 在何处查找模块的更新帮助文件。 -and 逻辑运算符连接比较语句。

此示例使用脚本块命令格式。 逻辑运算符(如 -and-or-not)仅在脚本块中有效。 不能在 Where-Object 命令的比较语句格式中使用它们。

参数

-CContains

指示如果对象的属性值与指定值完全匹配,则此 cmdlet 从集合中获取对象。 此作区分大小写。

例如:Get-Process | Where-Object ProcessName -CContains "svchost"

CContains 引用值的集合,如果集合包含与指定值完全匹配的项,则为 true。 如果输入是单个对象,PowerShell 会将其转换为一个对象的集合。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveContainsSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CEQ

指示如果属性值与指定值相同,则此 cmdlet 获取对象。 此作区分大小写。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CGE

指示如果属性值大于或等于指定值,则此 cmdlet 获取对象。 此作区分大小写。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveGreaterOrEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CGT

指示如果属性值大于指定值,则此 cmdlet 获取对象。 此作区分大小写。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveGreaterThanSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CIn

指示如果属性值包含指定的值,则此 cmdlet 获取对象。 此作区分大小写。

例如:Get-Process | Where-Object -Value "svchost" -CIn ProcessName

CIn 类似于 CContains,但属性和值位置相反。 例如,以下语句均为 true。

"abc", "def" -CContains "abc"

"abc" -CIn "abc", "def"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveInSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CLE

指示如果属性值小于或等于指定值,则此 cmdlet 获取对象。 此作区分大小写。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveLessOrEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CLike

指示如果属性值与包含通配符(*)的值匹配,则此 cmdlet 获取对象。 此作区分大小写。

例如:Get-Process | Where-Object ProcessName -CLike "*host"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveLikeSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CLT

指示如果属性值小于指定值,则此 cmdlet 获取对象。 此作区分大小写。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveLessThanSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CMatch

指示如果属性值与指定的正则表达式匹配,则此 cmdlet 获取对象。 此作区分大小写。 当输入是单个对象时,匹配的值将保存在 $Matches 自动变量中。

例如:Get-Process | Where-Object ProcessName -CMatch "Shell"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveMatchSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CNE

指示如果属性值不同于指定值,则此 cmdlet 获取对象。 此作区分大小写。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveNotEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CNotContains

指示如果对象的属性值与指定值不完全匹配,则此 cmdlet 获取对象。 此作区分大小写。

例如:Get-Process | Where-Object ProcessName -CNotContains "svchost"

NotContainsCNotContains 引用值的集合,如果集合不包含与指定值完全匹配的任何项,则为 true。 如果输入是单个对象,PowerShell 会将其转换为一个对象的集合。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveNotContainsSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CNotIn

指示如果属性值与指定值不匹配,则此 cmdlet 获取对象。 此作区分大小写。

例如:Get-Process | Where-Object -Value "svchost" -CNotIn -Property ProcessName

NotInCNotIn 运算符类似于 NotContainsCNotContains,但属性值和值位置是相反的。 例如,以下语句为 true。

"abc", "def" -CNotContains "Abc"

"abc" -CNotIn "Abc", "def"

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveNotInSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CNotLike

指示如果属性值与包含通配符的值不匹配,则此 cmdlet 获取对象。 此作区分大小写。

例如:Get-Process | Where-Object ProcessName -CNotLike "*host"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveNotLikeSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CNotMatch

指示如果属性值与指定的正则表达式不匹配,则此 cmdlet 获取对象。 此作区分大小写。 当输入是单个对象时,匹配的值将保存在 $Matches 自动变量中。

例如:Get-Process | Where-Object ProcessName -CNotMatch "Shell"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

CaseSensitiveNotMatchSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Contains

指示如果对象属性值中的任何项与指定值完全匹配,则此 cmdlet 获取对象。

例如:Get-Process | Where-Object ProcessName -Contains "Svchost"

如果输入是单个对象,PowerShell 会将其转换为一个对象的集合。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:IContains

参数集

ContainsSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-EQ

指示如果属性值与指定值相同,则此 cmdlet 获取对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:IEQ

参数集

EqualSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-FilterScript

指定用于筛选对象的脚本块。 将脚本块括在大括号({})。

参数名称 FilterScript 是可选的。

参数属性

类型:ScriptBlock
默认值:None
支持通配符:False
不显示:False

参数集

ScriptBlockSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-GE

指示如果属性值大于或等于指定值,则此 cmdlet 获取对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:IGE

参数集

GreaterOrEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-GT

指示如果属性值大于指定值,则此 cmdlet 获取对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:IGT

参数集

GreaterThanSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-In

指示如果属性值与任何指定值匹配,则此 cmdlet 获取对象。 例如:

Get-Process | Where-Object -Property ProcessName -In -Value "Svchost", "TaskHost", "WsmProvHost"

如果输入是单个对象,PowerShell 会将其转换为一个对象的集合。

如果对象的属性值是数组,则 PowerShell 使用引用相等性来确定匹配项。 Where-Object 仅当 Property 参数的值和值的任何 值是对象的 同一实例时,才返回对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:IIn

参数集

InSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InputObject

指定要筛选的对象。 还可以通过管道将对象传递给 Where-Object

InputObject 参数与管道命令结果Where-Object一起使用Where-Object时,cmdlet 会将 InputObject 视为单个对象。 即使值是命令的结果(如 -InputObject (Get-Process)),也是如此。

由于 InputObject 无法从对象数组或对象集合中返回单个属性,因此,如果用于 Where-Object 筛选那些在定义属性中具有特定值的对象集合,则可以 Where-Object 在管道中使用,如本主题中的示例所示。

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Is

指示如果属性值是指定 .NET 类型的实例,则此 cmdlet 获取对象。 将类型名称括在方括号中。

例如: Get-Process | Where-Object StartTime -Is [datetime]

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

IsSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-IsNot

指示如果属性值不是指定 .NET 类型的实例,则此 cmdlet 获取对象。

例如: Get-Process | where StartTime -IsNot [datetime]

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

IsNotSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-LE

指示如果属性值小于或等于指定值,则此 cmdlet 获取对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:ILE

参数集

LessOrEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Like

指示如果属性值与包含通配符(*)的值匹配,则此 cmdlet 获取对象。

例如:Get-Process | Where-Object ProcessName -Like "*host"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:ILike

参数集

LikeSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-LT

指示如果属性值小于指定值,则此 cmdlet 获取对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:ILT

参数集

LessThanSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Match

指示如果属性值与指定的正则表达式匹配,则此 cmdlet 获取对象。 当输入是单个对象时,匹配的值将保存在 $Matches 自动变量中。

例如:Get-Process | Where-Object ProcessName -Match "shell"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:IMatch

参数集

MatchSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NE

指示如果属性值不同于指定值,则此 cmdlet 获取对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:INE

参数集

NotEqualSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Not

指示如果属性不存在或具有 $null$false的值,则此 cmdlet 获取对象。

例如:Get-Service | Where-Object -Not "DependentServices"

此参数是在 Windows PowerShell 6.1 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

Not
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NotContains

指示如果属性值中的项与指定值完全匹配,则此 cmdlet 将获取对象。

例如:Get-Process | Where-Object ProcessName -NotContains "Svchost"

NotContains 引用值的集合,如果集合不包含与指定值完全匹配的任何项,则为 true。 如果输入是单个对象,PowerShell 会将其转换为一个对象的集合。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:INotContains

参数集

NotContainsSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NotIn

指示如果属性值与任何指定值不完全匹配,则此 cmdlet 获取对象。

例如:Get-Process | Where-Object -Value "svchost" -NotIn -Property ProcessName

如果 Value 的值是单个对象,PowerShell 会将该值转换为一个对象的集合。

如果对象的属性值是数组,则 PowerShell 使用引用相等性来确定匹配项。 Where-Object 仅当 Property 值和值的任何 值不是对象的 同一实例时,才返回对象。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:INotIn

参数集

NotInSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NotLike

指示如果属性值与包含通配符的值(*)不匹配,则指示此 cmdlet 获取对象。

例如:Get-Process | Where-Object ProcessName -NotLike "*host"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:INotLike

参数集

NotLikeSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NotMatch

指示当属性值与指定的正则表达式不匹配时,此 cmdlet 获取对象。 当输入是单个对象时,匹配的值将保存在 $Matches 自动变量中。

例如:Get-Process | Where-Object ProcessName -NotMatch "powershell"

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:INotMatch

参数集

NotMatchSet
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Property

指定输入对象的属性的名称。 该属性必须是实例属性,而不是静态属性。 这是一个位置参数,因此 名称属性是可选的。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

EqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
LessOrEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
GreaterThanSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveGreaterThanSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
LessThanSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveLessThanSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
GreaterOrEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveGreaterOrEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveLessOrEqualSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
LikeSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveLikeSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotLikeSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotLikeSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
MatchSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveMatchSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotMatchSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotMatchSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
ContainsSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveContainsSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotContainsSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotContainsSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
InSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveInSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotInSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotInSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
IsSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
IsNotSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
Not
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Value

指定属性值。 参数名称 “值”是可选的。 此参数在与以下比较参数一起使用时接受通配符:

  • 点击
  • CNotLike 类
  • 喜欢
  • 不喜欢

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:PSObject
默认值:None
支持通配符:True
不显示:False

参数集

EqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveGreaterOrEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
GreaterThanSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveGreaterThanSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
LessThanSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveLessThanSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
GreaterOrEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
LessOrEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveLessOrEqualSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
LikeSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveLikeSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotLikeSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotLikeSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
MatchSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveMatchSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotMatchSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotMatchSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
ContainsSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveContainsSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotContainsSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotContainsSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
InSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveInSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NotInSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CaseSensitiveNotInSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
IsSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
IsNotSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

PSObject

你可以通过管道将任何对象传递给此 cmdlet。

输出

Object

此 cmdlet 返回输入对象集中的选定项。

备注

PowerShell 包含以下与 Where-Object相关的别名:

  • 所有平台:
    • ?
    • where

从 Windows PowerShell 4.0 开始,添加了用于集合的 WhereForEach 方法。

可以在此处阅读有关这些方法的详细信息 ,about_Arrays