操作

定义

-eq

等于

-ne

不等于

-gt

大于

-ge

大于或等于

-lt

小于

-le

小于或等于

-Like

使用 * 通配符进行匹配

-NotLike

不使用 * 通配符进行匹配

-Match

匹配指定的正则表达式

-NotMatch

不匹配指定的正则表达式

-Contains

确定集合中是否包含指定的值

-NotContains

确定集合是否不包含特定值

-In

确定指定的值是否在集合中

-NotIn

确定指定的值是否不在集合中

-Replace

替换指定的值


表 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 一起使用来执行某种类型的筛选。