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