항목
    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 
          Name Value 
          ---- ----- 
          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


      입력이 스칼라이고 결과가 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>

          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은 비트-AND(-band), 포함 및 제외 비트 -OR 연산자(-bor 및 
      -bxor) 등을 포함한 표준 비트 연산자를 지원합니다. Windows PowerShell 2.0부터 모든 비트 
       연산자는 64비트 정수에서 작동합니다.


      Windows PowerShell은 다음과 같은 비트 연산자를 지원합니다.


      연산자  	설명               	  예  
      --------  ----------------------    -------------------
      -band     비트 AND                  C:\PS> 10 -band 3
                                          2
 
      -bor      비트 OR(포함)             C:\PS> 10 -bor 3
                                          11    

      -bxor     비트 OR(제외)             C:\PS> 10 -bxor 3
                                          9
 
      비트 연산자는 이진 형식의 값에서 작동합니다. 예를 들어 숫자 10의 비트 구조는 00001010(1바이트 
      기준)이고 숫자 3의 비트 구조는 00000011입니다. 비트 연산자를 사용하여 10과 3을 비교하면 각 바이트의 
      개별 비트가 비교됩니다.
 

      비트 AND 연산자에서는 두 입력 비트가 모두 1인 경우에만 결과 비트가 1로 설정됩니다.


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

 
      비트 OR(포함) 연산에서는 두 입력 비트 중 하나 또는 모두가 1인 경우에 결과 비트가 1로 설정됩니다. 두 
      입력 비트가 모두 0으로 설정된 경우에만 결과 비트가 0으로 설정됩니다.


          00001010   (10)
          00000011   ( 3)
          ------------------ bOR(포함)
          00001011   (11)


      비트 OR(제외) 연산자에서는 입력 비트 하나가 1인 경우에만 결과 비트가 1로 설정됩니다.


          00001010   (10)
          00000011   ( 3)
          ------------------ bXOR(제외)
          00001001   ( 9)
 

참고 항목
    about_Operators
    about_Regular_Expressions
    about_Wildcards
    Compare-Object















목차