操作 | 定义 |
| 等于 |
| 不等于 |
| 大于 |
| 大于或等于 |
| 小于 |
| 小于或等于 |
| 使用 |
| 不使用 |
| 匹配指定的正则表达式 |
| 不匹配指定的正则表达式 |
| 确定集合中是否包含指定的值 |
| 确定集合是否不包含特定值 |
| 确定指定的值是否在集合中 |
| 确定指定的值是否不在集合中 |
| 替换指定的值 |
表 5-1 中列出的所有运算符都不区分大小写。 将 c
放置在表 5-1 中列出的运算符之前,使其区分大小写。 例如,-ceq
是区分大小写的 -eq
比较运算符。
首字母大写的“PowerShell”等效于使用等于比较运算符的小写的“powershell”。
PowerShell复制
'PowerShell' -eq 'powershell'
Output复制
True
使用区分大小写的等于比较运算符时,不等效。
PowerShell复制
'PowerShell' -ceq 'powershell'
Output复制
False
不等于比较运算符反转条件。
PowerShell复制
'PowerShell' -ne 'powershell'
Output复制
False
大于、大于或等于、小于和小于或等于均可用于字符串或数值。
PowerShell复制
5 -gt 5
Output复制
False
在上一个示例中,使用大于或等于而不是大于,会返回布尔值 true,因为 5 等于 5。
PowerShell复制
5 -ge 5
Output复制
True
根据上述两个示例中的结果,你可能会猜到使用小于和小于或等于的情况。
PowerShell复制
5 -lt 10
Output复制
True
即使对于经验丰富的 PowerShell 用户,-Like
和 -Match
运算符也可能会造成混淆。 -Like
与通配符 *
和 ?
结合使用,以执行“like”匹配。
PowerShell复制
'PowerShell' -like '*shell'
Output复制
True
-Match
使用正则表达式执行匹配。
PowerShell复制
'PowerShell' -match '^*.shell$'
Output复制
True
使用范围运算符将数字 1 到 10 存储在变量中。
PowerShell复制
$Numbers = 1..10
Output复制
确定 $Numbers
变量是否包含 15。
PowerShell复制
$Numbers -contains 15
Output复制
False
确定它是否包含数字 10。
PowerShell复制
$Numbers -contains 10
Output复制
True
-NotContains
反转逻辑,以查看 $Numbers
变量是否不包含值。
PowerShell复制
$Numbers -notcontains 15
Output复制
True
前面的示例返回布尔值 true,因为 $Numbers
变量不包含 15。 但它包含数字 10,因此在进行测试时,结果为 false。
PowerShell复制
$Numbers -notcontains 10
Output复制
False
PowerShell 版本 3.0 首次引入了“in”比较运算符。 它用于确定某个值是否“位于”数组中。 $Numbers
变量是数组,因为它包含多个值。
PowerShell复制
15 -in $Numbers
Output复制
False
换言之,-in
执行与 contains 比较运算符相同的测试,不过方向相反。
PowerShell复制
10 -in $Numbers
Output复制
True
15 不在 $Numbers
数组中,因此在下面的示例中返回 false。
PowerShell复制
15 -in $Numbers
Output复制
False
与 -contains
运算符一样,not
反转 -in
运算符的逻辑。
PowerShell复制
10 -notin $Numbers
Output复制
False
上面的示例返回 false,因为 $Numbers
数组包含 10,并且条件进行了测试以确定它是否不包含 10。
15“不位于”$Numbers
数组中,因此它返回布尔值 true。
PowerShell复制
15 -notin $Numbers
Output复制
True
-replace
运算符所执行的操作和你想象的一样。 它用于替换内容。 如果指定一个值,则会将该值替换为空值。 在下面的示例中,我将“Shell”替换为空值。
PowerShell复制
'PowerShell' -replace 'Shell'
Output复制
Power
如果要将值替换为其他值,请在要替换的模式之后指定新值。 SQL Saturday in Baton Rouge is an event that I try to speak at every year. 在下面的示例中,我将“Saturday”这个词替换为缩写“Sat”。
PowerShell复制
'SQL Saturday - Baton Rouge' -Replace 'saturday','Sat'
Output复制
SQL Sat - Baton Rouge
还有一些可用于替换内容的方法(如 Replace()),其工作原理类似于替换运算符。 但是,默认情况下,-Replace
运算符不区分大小写,而 Replace() 方法区分大小写。
PowerShell复制
'SQL Saturday - Baton Rouge'.Replace('saturday','Sat')
Output复制
SQL Saturday - Baton Rouge
请注意,上述示例中未替换“Saturday”一词。 这是因为所指定的大小写格式与原始格式不同。 当指定的“Saturday”的大小写格式与原始格式相同时,Replace() 方法会按预期替换它。
PowerShell复制
'SQL Saturday - Baton Rouge'.Replace('Saturday','Sat')
Output复制
SQL Sat - Baton Rouge
使用方法转换数据时要小心,因为可能会遇到无法预料的问题,例如 Turkey Test 失败。 有关示例,请参阅标题为使用 Pester 测试具有其他区域性的 PowerShell 代码的博客文章。 我建议尽量使用运算符而不是方法,以避免这些类型的问题。
尽管可以像前面的示例中所示使用比较运算符,但我通常将它们与 Where-Object
cmdlet 一起使用来执行某种类型的筛选。