主題
    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 
          名稱 值 
          ---- ----- 
          0  sun
 
 
    -notmatch
      描述:不比對字串。使用規則運算式。
            當輸入為純值時,會填入 $Matches 自動變數。
      範例:


          C:\PS> "Sunday" -notmatch "sun"
          False

          C:\PS> $matches 
          名稱 值 
          ---- ----- 
          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 運算子。-match 運算子會傳回布林值
      並填入 $Matches 自動變數。

          C:\PS> "Sunday" -match "sun"
          True

          C:\PS> $matches

          名稱                           值
          ----                           -----
          0                              Sun


      當輸入為純量且結果為 False (也就是偵測到相符項目) 時,-notmatch 運算子會填
      入 $Matches 自動變數。


          C:\PS> "Sunday" -notmatch "rain"
          True

          C:\PS> $matches
          C:\PS>
          
          C:\PS> "Sunday" -notmatch "day"
          False

          C:\PS> $matches
          C:\PS>

          名稱                           值
          ----                           -----
          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 支援標準的位元運算子,包括位元運算 AND (-band) 和 
      Inclusive 和 Exclusive 位元運算 OR 運算子 (-bor 和 -bxor)。從 Windows 
      PowerShell 2.0 開始,所有位元運算子都可搭配 64 位元整數使用。


      Windows PowerShell 支援下列位元運算子。


      運算子    描述                      範例  
      --------  ----------------------    -------------------
      -band     位元運算 AND              C:\PS> 10 -band 3
                                          2
 
      -bor      位元運算 OR (inclusive)   C:\PS> 10 -bor 3
                                          11    

      -bxor     位元運算 OR (exclusive)   C:\PS> 10 -bxor 3
                                          9
 
      位元運算子是作用於二進位格式的值。例如,數字 10 的位元結構是 00001010 (以 1 
      位元組為基準),數字 3 的位元結構是 00000011。當您使用位元運算子來比較 10 和 
      3,就會對這兩個位元組進行個別位元比較。
 

      在位元運算 AND 作業中,產生的位元只有在兩個輸入位元都為 1 時才會設為 1。


          00001010   (10)
          00000011   ( 3)
          ------------------ bAND
          00000010   ( 2)

 
      在位元運算 OR (inclusive) 作業中,產生的位元在其中一個或兩個輸入位元為 1 時
      會設為 1。產生的位元只有在兩個輸入位元都設為 0 時才會設為 0。


          00001010   (10)
          00000011   ( 3)
          ------------------ bOR (inclusive)
          00001011   (11)


      在位元運算 OR (exclusive) 作業中,產生的位元只有在一個輸入位元為 1 時才會設
      為 1。


          00001010   (10)
          00000011   ( 3)
          ------------------ bXOR (exclusive)
          00001001   ( 9)
 

請參閱
    about_Operators
    about_Regular_Expressions
    about_Wildcards
    Compare-Object




目錄