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