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 个表示比较运算符的开关参数。 简化的语法比脚本块语法更易于读取和写入。 可以将其中一个开关参数与 Property 和 Value 参数组合在一起,以创建一个命令,以便根据对象的属性值筛选对象。- 例如,以下命令还获取具有优先级类 - 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 属性值的进程。 运算符 -match 和 Match 参数允许使用正则表达式匹配项。
这些命令按相同的方式筛选进程并返回相同的输出。 只有语法不同。
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 获取名称不以 Microsoft 或 PS开头的模块,并具有 HelpInfoURI 属性的值,该属性指示 PowerShell 在何处查找模块的更新帮助文件。 
              -and 逻辑运算符连接比较语句。
此示例使用脚本块命令格式。 逻辑运算符(如 -and、-or和 -not)仅在脚本块中有效。 不能在 Where-Object 命令的比较语句格式中使用它们。
- 有关 PowerShell 逻辑运算符的详细信息,请参阅 about_Logical_Operators。
- 有关可更新帮助功能的详细信息,请参阅 about_Updatable_Help。
参数
-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"
NotContains 和 CNotContains 引用值的集合,如果集合不包含与指定值完全匹配的任何项,则为 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
NotIn 和 CNotIn 运算符类似于 NotContains 和 CNotContains,但属性值和值位置是相反的。 例如,以下语句为 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 开始,添加了用于集合的 Where 和 ForEach 方法。
可以在此处阅读有关这些方法的详细信息 ,about_Arrays