예제와 함께 PowerShell 부등호 연산자 배우기

다음은 명령 줄 도구가 아닌 Microsoft의 프로그래밍 언어 인 PowerShell입니다. 이를 사용하면 시스템을 제어하고 자동화 할 수 있습니다. PowerShell은 대부분의 프로그래밍 언어와는 다른 구문을 사용합니다.

그러나 PowerShell 연산자 구문을 이해하면 사용하기 어렵지 않다는 것을 알 수 있습니다. PowerShell에서 사용하는 가장 일반적인 연산자 중 하나는 “Not Equal” 연산자 (-ne)입니다. 이 연산자를 사용하면 두 값이 서로 다른지 테스트할 수 있습니다.

이 문서에서는 PowerShell Not Equal 연산자에 대해 알아보고 예제를 사용하는 방법을 배울 것입니다.

전제 조건

이 튜토리얼은 실습을 통한 데모로 진행됩니다. 따라오려면 PowerShell이 설치된 시스템이 있는지 확인하십시오. 이 튜토리얼은 Windows 10과 PowerShell 7을 사용합니다.

PowerShell Not Equal 연산자 사용 (기본)

간단히 말해서 PowerShell Not Equal 연산자 (-ne)는 두 객체의 값이 서로 다른지 여부를 결정하고 결과에 따라 부울 값이 반환됩니다. 값이 서로 다르면 결과는 True이고, 그렇지 않으면 결과는 False입니다.

하지만 언제 어떻게 PowerShell Not Equal 연산자를 사용해야 할까요? 다음 섹션에서 PowerShell Not Equal의 기본을 가르칠 것입니다.

변수 비교

PowerShell의 Not Equal 연산자의 가장 일반적인 사용 중 하나는 두 변수를 비교하는 것입니다. 예를 들어, 두 변수 $a$b가 있고 이들이 동일한지 여부를 확인하려면 다음과 같은 비교 구문을 사용합니다.

$a -ne $b

$a와 $b의 값이 동일하지 않으면 이 비교는 True를 반환합니다. 그렇지 않으면 False를 반환합니다.

1. PowerShell 콘솔에서 다음 명령을 실행하여 예제로 사용할 변수를 생성합니다. $a, $b, $c 및 $d 변수는 서로 다른 값들을 나타냅니다. 각 값들을 비교하여 동일한지 여부를 테스트할 수 있습니다.

$c와 $d에 동일한 값을 할당하여 PowerShell Not Equal 연산자가 동일한 값과 어떻게 작동하는지 살펴봅니다.

$a = 1
$b = 2
$c = 3
$d = 3

2. 이제 PowerShell Not Equal 비교를 수행하여 $a와 $b의 값이 동일하지 않은지 확인합니다.

$a -ne $b

$a의 값이 1이고 $b의 값이 2이므로 결과는 True가 반환됩니다.

You will see a False output return, as shown in the image below, since the values of $c and $d are equal (3=3). variables with not equal values

3. 이제 $c와 $d 변수를 비교하여 이들이 또한 동일하지 않은지 확인합니다.

$c -ne $d

$c와 $d의 값이 동일하므로 결과로 False가 반환됩니다(3=3).

Comparing variables with equal values

값 비교

PowerShell을 사용할 때 비교하려는 객체가 모두 변수에 있는 것은 아닙니다. 이 경우 PowerShell Not Equal 연산자를 사용하여 값을 직접 비교할 수 있습니다.

예를 들어, 아래 명령은 PowerShell Not Equal 연산자를 사용하여 두 값을 직접 비교합니다.

5 -ne 3

값이 동일하지 않으므로 True 값이 반환됩니다.

Comparing different values using the PowerShell not equal operator

반면에, 동일한 값 비교는 False를 반환합니다.

5 -ne 5
Comparing equal values using the PowerShell not equal operator

배열에서 값 제거하기

PowerShell Not Equal 연산자는 두 값이 다르다는 것을 나타내는 부울 결과를 반환합니다. 이 연산자는 해당 기능 외에도 배열에서 항목을 걸러내는 데에도 사용될 수 있습니다.

예를 들어, 1부터 5까지의 숫자로 이루어진 배열을 포함하는 $numbers라는 변수를 만듭니다.

# 1부터 5까지의 숫자를 포함하는 배열 생성.
$numbers = 1..5
# 배열 표시
$numbers
Storing an array

다음으로, 아래 명령을 실행하여 숫자 4를 제외한 배열을 반환합니다.

$numbers -ne 4

이제 명령이 숫자 4를 제외한 배열의 모든 숫자를 반환한 것을 확인할 수 있습니다.

Filtering an array

문자열 비교

숫자 외에도 PowerShell Not Equal 비교를 문자열에 적용할 수 있습니다.

1. 예를 들어, “Hello”와 “World”라는 두 문자열이 있다고 가정해보세요. 두 문자열이 다른지 여부를 확인하려면 아래 명령을 실행하세요.

"Hello" -ne "World"

결과는 “Hello”가 “World”와 다르기 때문에 True입니다.

Comparing unequal stings

2. 이제 문자열 “Hello”와 “hello”를 비교하여 같은지 여부를 확인합니다.

"Hello" -ne "hello"

그러면 “Hello”가 “hello”와 같지 않기 때문에 결과는 False입니다.

Comparing two strings

3. PowerShell Not Equal 연산자는 대소문자를 구분하지 않습니다. 이전 단계에서 확인할 수 있듯이, “Hello”는 “hello”와 같습니다. 그러나 문자열 값을 비교할 때 대소문자를 구분하려면 -ne 연산자를 -cne 연산자로 대체하면 됩니다. 이는 대소문자 구분하는 부등호를 의미합니다.

"Hello" -cne "hello"

결과적으로, PowerShell에 따르면 “Hello”와 “hello”는 더 이상 같지 않습니다.

“Hello” and “hello”

실제 환경에서 PowerShell Not Equal 연산자 사용하기 (예제)

PowerShell Not Equal 연산자의 기본 개념을 이해했으므로, 다음 섹션에서는 실제 환경에서의 사용 예를 살펴보실 수 있습니다.

서비스 상태 모니터링

A staple of Windows systems administration is monitoring the server service status. This task involves filtering out which services whose Status Is Not Running.

예를 들어, Get-Service cmdlet을 실행하여 로컬 컴퓨터의 모든 서비스를 표시합니다.

Get-Service

아래 출력에서 모든 중지된 서비스와 실행 중인 서비스를 확인할 수 있습니다.

Display all services

이제, “Running”이 아닌 서비스만 필터링하려면 아래 명령을 실행하고 -ne 연산자를 다음과 같이 적용하십시오.

Get-Service | Where-Object {$_.Status -ne "Running"}

아래에서 확인할 수 있듯이, PowerShell Not Equal 비교를 적용한 후에는 상태 열에서 중지된 서비스만 표시됩니다.

Filtering non-running services

마찬가지로, 아래 명령을 실행하여 Status Is Not Stopped인 서비스를 반환합니다.

Get-Service | Where-Object {$_.Status -ne "Stopped"}

이번에는 실행 중인 서비스만 표시됩니다.

Showing all running services

파워셸 Not Equal을 AND 연산자와 결합하기

1:1 비교 외에도, PowerShell Not Equal 조건을 다른 비교 연산자, 예를 들어 -eq (equal),와 결합할 수 있습니다. 이를 위해 -and 연산자를 사용합니다. 이 방법은 비교하는 개체가 여러 조건을 충족해야 할 때 유용합니다.

예를 들어, 서버 서비스 모니터링은 일반적으로 모든 자동 서비스가 실행 중이어야 함을 확인하는 것을 포함합니다. 아래 명령을 실행하여 Status Is Not RunningStartType Is Automatic인 서비스를 모두 나열합니다. 이 예에서 개체 값은 모든 조건과 일치해야 합니다.

Get-Service | 
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} |
Select-Object Status,StartType,Name

이제 실행 중이 아닌 자동 서비스를 볼 수 있으며, 이를 통해 수행해야 할 작업을 결정하는 데 도움이 됩니다.

PowerShell Not Equal match all conditions

If/Else 조건 논리 추가

파워셸 Not Equal 연산자를 if/else 문과 같은 조건문 안에 사용할 수도 있습니다.

예를 들어, 대부분의 경우 StartType 값이 Automatic이면 서비스가 실행 중이어야 합니다. 아래 스크립트는 모든 서비스를 가져오고, 실행 중이 아닌 자동 서비스를 확인하고, 수정 작업을 실행합니다—메시지를 표시하고 서비스를 시작합니다.

참고: Start-Service $_.Name 줄은 주석 처리되어 있으며 실행되지 않습니다. 명령을 실행하려면 이 줄의 주석을 해제하세요.

아래 코드를 복사하여 PowerShell에서 실행하세요.

Get-Service -ErrorAction SilentlyContinue | ForEach-Object {
    if ($_.Status -ne 'Running' -and $_.StartType -eq 'Automatic') {
        "The service [$($_.Name)] StartType is [$($_.StartType)] but its current Status is [$($_.Status)]"
        # Start-Service $_.Name
    }
}

결과는 자동 서비스가 실행되지 않는 것을 보여줍니다.

Using PowerShell Not Equal in Conditional Logic

결론

이 글에서는 PowerShell Not Equal 연산자에 대해 배웠습니다. 또한 예제와 함께 사용하는 방법을 배웠습니다. 이 시점에서는 그 작동 방식에 대해 좋은 이해를 가져야합니다.

이 새롭게 얻은 지식으로 PowerShell 스크립트에서 Not Equal 연산자를 사용하여 조건을 테스트 할 수 있습니다. 그러나 다른 비교 연산자도 사용할 수 있습니다. 여러 연산자를 결합하여 더 복잡한 조건을 테스트 할 수도 있습니다.

Source:
https://adamtheautomator.com/powershell-not-equal/