主题 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