about_Comparison_Operators
主题
about_Comparison_Operators
简短说明
说明在 Windows PowerShell 中用于比较值的运算符。
详细说明
使用比较运算符,可以指定用于比较值和查找与指定模式匹配的值的条件。
若要使用比较运算符,请同时指定要进行比较的值以及分隔这些值的运算符。
默认情况下,所有比较运算符都不区分大小写。若要使一个比较运算符区
分大小写,请在运算符名称前加字母"c"。例如,"-eq"区分大小写的形式
为"-ceq"。若要明确表示不区分大小写,则在运算符前加字母"i"。
例如,"-eq"的明确不区分大小写的形式为"-ieq"。
除包含运算符(-contains、-notcontains)和类型运算符(-is、-isnot)外的
所有比较运算符在运算符的输入(运算符左侧的值)是单个值(标量)时,都将
返回一个布尔值。当输入是值的集合时,包含运算符和类型运算符将返回任何
匹配值。如果集合中没有匹配项,则这些运算符不返回任何值。包含运算符和类型
运算符始终返回布尔值。
Windows PowerShell 支持以下比较运算符。
-eq
说明:等于。包含一个相同的值。
示例:
C:\PS> "abc", "def" -eq "abc"
abc
-ne
说明:不等于。包含一个不同的值。
示例:
C:\PS> "abc", "def" -ne "abc"
def
-gt
说明:大于。
示例:
C:\PS> 8 -gt 6
True
-ge
说明:大于或等于。
示例:
C:\PS> 8 -ge 8
True
-lt
说明:小于。
示例:
C:\PS> 8 -lt 6
False
-le
说明:小于或等于。
示例:
C:\PS> 6 -le 8
True
-like
说明:使用通配符 (*) 匹配。
示例:
C:\PS> "Windows PowerShell" -like "*shell"
True
-notlike
说明:使用通配符 (*) 不匹配。
示例:
C:\PS> "Windows PowerShell" -notlike "*shell"
False
-match
说明:使用正则表达式与字符串匹配。当输入为标量时,它将填充 $Matches 自动变量。
示例:
C:\PS> "Sunday" -match "sun"
True
C:\PS> $matches
Name Value
---- -----
0 sun
-notmatch
说明: 与字符串不匹配。使用正则表达式。
当输入为标量时,它将填充 $Matches 自动变量。
示例:
C:\PS> "Sunday" -notmatch "sun"
False
C:\PS> $matches
NameValue
---- -----
0 sun
-contains
说明:包含运算符。包含一个相同的完整值(而不是值的一部分)。始终返回布尔值。
示例:
C:PS> "abc", "def" -contains "def"
True
-notcontains
说明:包含运算符。不包含一个相同值。始终返回布尔值。
示例:
C:PS> "Windows", "PowerShell" -notcontains "Shell"
True
-replace
说明:替换运算符。更改值的指定元素。
示例:
C:\PS> "Get-Process" -replace "Get", "Stop"
Stop-Process
相等运算符
相等运算符(-eq、-ne)在一个或多个输入值与指定模式相同时,返回一个 TRUE 值或返回匹配项。
整个模式必须与整个值匹配。
以下示例说明了等于运算符的功能:
C:PS> 1,2,3 -eq 2
2
C:PS> "PowerShell" -eq "Shell"
False
C:PS> "Windows", "PowerShell" -eq "Shell"
C:PS>
C:\PS> "abc", "def", "123" -eq "def"
def
包含运算符
包含运算符(-contains 和 -notcontains)与相等运算符相似。
不过,包含运算符始终返回布尔值,即使在输入为集合时也如此。
另外,与相等运算符不同的是,包含运算符在检测到第一个匹配项时
立即返回一个值。相等运算符对所有输入进行评估,然后返回集合中的
所有匹配项。以下示例说明了 -contains 运算符的功能:
C:PS> 1,2,3 -contains 2
True
C:PS> "PowerShell" -contains "Shell"
False
C:PS> "Windows", "PowerShell" -contains "Shell"
False
C:\PS> "abc", "def", "123" -contains "def"
True
C:\PS> "true", "blue", "six" -contains "true"
True
以下示例说明了包含运算符与等于运算符有何不同。包含运算符在遇到
第一个匹配项时返回一个 TRUE 值。
C:\PS> 1,2,3,4,5,4,3,2,1 -eq 2
2
2
C:\PS> 1,2,3,4,5,4,3,2,1 -contains 2
True
在一个非常大的集合中,-contains 运算符返回结果的速度比等于运算符快。
匹配运算符
匹配运算符(-match 和 -notmatch)使用正则表达式来查找与指定模式匹配或不匹配的元素。
语法是:
<string[]> -match <regular-expression>
<string[]> -notmatch <regular-expression>
以下示例说明了 -match 运算符的一些用法:
C:\PS> "Windows", "PowerShell" -match ".shell"
PowerShell
C:\PS> (get-command get-member -syntax) -match "-view"
True
C:\PS> (get-command get-member -syntax) -notmatch "-path"
True
C:\PS> (get-content servers.txt) -match "^Server\d\d"
Server01
Server02
匹配运算符仅在字符串中搜索。它们无法在整数数组或其他对象中搜索。
当运算符的输入(左侧参数)是一个单标量对象时,-match 和 -notmatch 运算符填充 $Matches
自动变量。当输入是标量时,-match 和 notmatch 运算符返回布尔值,并将 $Matches 自动变量
的值设置为参数的匹配项目。
如果输入是一个集合,则 -match 和 -notmatch 运算符返回该集合中的匹配成员,但运算符不会填
充 $Matches 变量。
例如,以下命令将一个字符串集合提交给 -match 运算符。-match 运算符将返回集合中的匹配项
目。它不会填充 $Matches 自动变量。
C:\PS> "Sunday", "Monday", "Tuesday" -match "sun"
Sunday
C:\PS> $matches
C:\PS>
相比之下,以下命令向匹配运算符提交一个单字符串。-match 运算符返回布尔值并填充 $Matches
自动变量。
C:\PS> "Sunday" -match "sun"
True
C:\PS> $matches
Name Value
---- -----
0 Sun
-notmatch 运算符在输入是标量且结果为 False 时(也就是说,当它检测到匹配项时)填充
$Matches 自动变量。
C:\PS> "Sunday" -notmatch "rain"
True
C:\PS> $matches
C:\PS>
C:\PS> "Sunday" -notmatch "day"
False
C:\PS> $matches
C:\PS>
Name Value
---- -----
0 day
替换运算符
-replace 运算符可通过正则表达式用指定值替换某个值的全部或部分。可使用 -replace 运算符完
成很多管理任务,如重命名文件。例如,以下命令可将所有 .gif 文件的文件扩展名更改为.jpg:
Get-ChildItem | Rename-Item -NewName { $_ -replace '.gif$','.jpg$' }
-replace 运算符的语法如下,其中,<original> 占位符表示要被替换的字符,而 <substitute>
占位符表示要替换成的字符:
<input> <operator> <original>, <substitute>
默认情况下,-replace 运算符不区分大小写。要使它区分大小写,请使用 -creplace。要明确表示
它不区分大小写,请使用 ireplace。请看以下示例:
C:\PS> "book" -replace "B", "C"
Cook
C:\PS> "book" -ireplace "B", "C"
Cook
C:\PS> "book" -creplace "B", "C"
book
位运算符
Windows PowerShell 支持标准位运算符,包括位与运算符 (-band) 以及位或和位异或运算符(-
bor 和 -bxor)。从 Windows PowerShell 2.0 开始,所有位运算符都使用 64 位整数。
Windows PowerShell 支持以下位运算符。
运算符 说明 示例
-------- ---------------------- -------------------
-band 位与 C:\PS> 10 -band 3
2
-bor 位或 C:\PS> 10 -bor 3
11
-bxor 位异或 C:\PS> 10 -bxor 3
9
位运算符对二进制格式值执行运算。例如,数字 10 的
位结构是 00001010(基于 1 个字节),数字 3 的位结构
是 00000011。在使用位运算符来比较 10 和 3 时,将比较每个
字节中的各个位。
在位与运算中,仅在两个输入位都为 1 时才将所得的位设置为 1。
00001010 (10)
00000011 ( 3)
------------------ 位与
00000010 ( 2)
在位或运算中,当一个或两个输入位是 1 时,都会将所得的位设置为 1。
仅在输入位都为 0 时,才将所得的位设置为 0。
00001010 (10)
00000011 ( 3)
------------------ 位或
00001011 (11)
在位异或运算中,仅在一个输入位为 1 时才将所得的位设置为 1。
00001010 (10)
00000011 ( 3)
------------------ 位异或
00001001 ( 9)
另请参阅
about_Operators
about_Regular_Expressions
about_Wildcards
Compare-Object