目录导航

在 PowerShell 中,通常会生成和传递比预期更多的对象到管道中。 可以通过使用 Format-* cmdlet 指定特定对象的属性进行显示,但是这对从显示中删除整个对象的问题没有任何帮助。 你可能希望在管道末尾之前筛选对象,以便你可以只对初始生成对象的子集执行操作。
借助 PowerShell 中的 Where-Object cmdlet,可以测试管道中的每个对象,并沿管道仅传递满足特定测试条件的对象。 将从管道中删除未通过测试的对象。 测试条件以 FilterScript 参数值的形式提供。

使用 Where-Object 执行简单测试

FilterScript 值是计算结果为 True 或 False 的脚本块 ,即由大括号 ({}) 括起来的一个或多个 PowerShell 命令。 这些脚本块可能非常简单,但是创建它们需要了解有关 PowerShell 的另一个概念,即比较运算符。 比较运算符比较其每一侧显示的项。 比较运算符以连字符 (-) 开头,后跟名称。 基本比较运算符适用于几乎任何类型的对象。 更高级的比较运算符可能仅适用于文本或数组。

注:默认情况下,在处理文本时,PowerShell 比较运算符不区分大小写。

出于分析考虑,<、> 和 = 等符号不用作比较运算符。 相反,比较运算符由字母组成。 下表中列出了基本比较运算符。

比较运算符 含义 示例(返回 True)
-eq 等于 1 -eq 1
-ne 不等于 1 -ne 2
-lt 小于 1 -lt 2
-le 小于或等于 1 -le 2
-gt 大于 2 -gt 1
-ge 大于或等于 2 -ge 1
-like 相似(文本的通配符比较) "file.doc" -like "f*.do?"
-notlike 不相似(文本的通配符比较) "file.doc" -notlike "p*.doc"
-contains 包含 1,2,3 -contains 1
-notcontains 不包含 1,2,3 -notcontains 4

Where-Object 脚本块使用特殊变量 $_ 来指代管道中的当前对象。 以下是其工作原理示例。 如果你有一个数字列表,且希望仅返回小于 3 的数字,则可使用 Where-Object 通过键入以下内容来筛选数字:

1,2,3,4 | Where-Object {$_ -lt 3}
1
2


 

声明:以上内容为个人学习过程的笔记或总结,不保证完全正确,请谨慎参考使用。部分内容整理自互联网,官方文档等,恕不一一列出,如果有侵犯到您的权益,请联系我们删除。