如下是通过帮助内容输出得到
主题
比较运算符
简短说明
Windows PowerShell 中用于对值进行比较的运算符
详细说明
比较运算符用于比较命令中不同参数中的值。从根本上说,每次比较都将创建一
个条件,该条件的计算结果为 True 或 False。根据该比较,可以采取相应的操
作。例如,可以将比较运算符与语句块结合使用,以测试特定的条件。该测试的
结果将确定应采取何种操作(亦即,将运行哪些代码块)。
PowerShell 支持以下比较运算符:
运算符 说明 示例 t/f
------------ --------------------- ------------------------ -----
-eq 等于 10 -eq 10 true
-ne 不等于 10 -ne 10 false
-gt 大于 10 -gt 10 false
-ge 大于 10 -ge 10 true
或等于
-lt 小于 10 -lt 10 false
-le 小于或等于 10 -le 10 true
-like 通配符比较 "one" -like "o*" true
-notlike 通配符比较 "one" -notlike "o*" false
-match 正则表达式 "book" -match "[iou]" true
比较
-notmatch 正则表达式 "book" -notmatch "[iou]" false
比较
以上列出的比较运算符不区分大小写。换句话说,“abc”与“ABC”是相同的。但是,
可以通过在运算符名称前加字母 c 来指定比较区分大小写,例如 -ceq。在使用
c 后,比较运算将区分要进行比较的字母的大小写。也可通过在运算符前加字母
i 来指定运算符不区分大小写,例如 -ieq。这与不指定 c 或 i 同效。但您还是
有可能希望使用 i 来表明在进行比较运算时不区分大小写。
若要使用比较运算符,则必须指定要进行比较的值,以及分隔这些值的运算符。例
如,以下命令显示了 if 语句中使用的 -gt 比较运算符:
if ($varA -gt $varB)
{
Write-Host "Condition evaluates to true."
}
else
{
Write-Host "Condition evaluates to false."
}
此示例中使用 -gt 运算符来确定 $varA 中的值是否大于 $varB 中的值。如果
此条件的计算结果为 True,则运行第一个代码块。如果此条件的计算结果为
False,则运行第二个代码块。
也可以在上述示例的语句中使用除 -gt 运算符以外的运算符之一。例如,可以使
用 -le 运算符来测试 $varA 是否小于或等于 $varB。同样,如果此条件的计算
结果为 True,则运行第一个代码块,否则运行第二个代码块。
除了基本的比较运算符外,PowerShell 还支持几种特殊的比较运算符,包括范围
运算符、替换运算符和位运算符。
范围运算符
另一个非常有用的比较运算符是由两个句点 (..) 表示的范围运算符。范围运算
符用于标识语句中可以使用的值的范围。若要使用范围运算符,则必须指定范围
的开始值、该运算符以及此范围中最后的值。例如,以下语句将使用范围运算符
来定义从 1 到 $varB 变量之间的范围:
foreach($varA in 1..$varB)
{
Write-Host $varA
}
如果将 $varB 设置为 10,则该语句的范围将是从 1 到 10(包括 1 和 10)。这
表示,该语句每循环一次(作为 foreach 循环的结果),都会将 1 到 10 这一范围
中的一个值赋予 $varA。该值从 1 开始,每循环一次就递增 1。使用范围运算
符,您只需标识出值范围而无需逐一键入每个值。
替换运算符
替换运算符用于使用指定的值来替换原值中部分或全部的值。例如,如果值为
“book”,则可使用替换运算符将 b 替换为 C。替换运算符将 b 与值 (book) 进
行比较以确定该值中是否包含 b。如果比较的结果为 True,则使用 C 替换 b,然
后返回新的值。如果比较的结果为 False,则返回原值。
PowerShell 支持三种形式的替换运算符:
运算符 大小写 示例 结果
---------- ----------------- --------------------------- -------
-replace 不区分大小写 "book" -replace "B", "C" Cook
-ireplace 不区分大小写 "book" -ireplace "B", "C" Cook
-creplace 区分大小写 "book" -creplace "B", "C" book
如上述示例所示,-replace 运算符的使用方法与任何其他比较运算符基本相同,
区别在于此运算符后需指定两个值。第一个值为要被替换掉的字符,而第二个值
为要在原值中插入以替换原始字符的新字符。
位运算符
与替换比较运算符一样,位运算符不会返回值 True 或 False,而会返回从比较中
得到的值。该比较本身基于构成要比较值的基本位。位是逐一比较的,而且,根据
所使用的位运算符,这些比较的结果本身也是位的形式,这些位在返回时已转换为
数值。
例如,数字 10 的位结构是 00001010(基于 1 个字节),数字 3 的位结构是
00000011。如果使用位运算符来比较 10 和 3,则将比较每个字节中的各个位。
换句话说,将把数字 10 字节中的第一位与数字 3 字节中的第一位进行比较,然
后再比较每个字节中的第二位,依此类推。这两个字节的比较将返回第三个字节,
随后,返回的字节将转换为对应的数字值。比较运算返回的值就是这个数值。
PowerShell 支持以下位运算符:
运算符 说明 示例 结果
------------ --------------------- ---------------------- -------
-band 位与 10 -band 3 2
-bor 位或 10 -bor 3 11
在使用 -band 对值进行比较时,只有在所比较的两个位均为 1 的情况下才能返
回一位 (1)。而在使用 -bor 运算符时,只需一个位为 1 即可返回一位 (1)。
类型运算符
某些运算符可用于进行类型确定。这些运算符将根据类型是否相同而返回 True
或 False。“-is”运算符允许在对象类型之间进行比较,如果类型相同则返回布尔
值 True,如果不同则返回布尔值 False。“-isnot”运算符用于在对象类型之间
进行比较,如果类型相同则返回布尔值 False,如果不同则返回布尔值 True。运
算符的右侧必须表示为一种类型,或可转换为 Type。运算符的左侧的类型可通
过调用对象 GetType() 方法确定。任何不带小数点的数字文本均采用最小的表
示形式,以保持简洁。
运算符 说明 示例 结果
------------ --------------------- ---------------------- -------
-is 是指定的 $true -is [bool] true
类型
-is 是指定的 32 -is [int] true
类型
-is 是指定的 32 -is [double] false
类型
-isnot 不是 $true -isnot [bool] false
指定的类型