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