PowerShell If 문을 사용하여 스크립트에 조건 로직 추가하는 방법

PowerShell는 여러 가지 이유로 강력한 스크립팅 언어입니다. 그 중 하나는 조건 로직을 지원한다는 것인데, 이는 PowerShell 스크립트를 더 효율적이고 효과적으로 만들어주는 데 도움이 될 수 있습니다. 이 기사에서는 If, Else, Elseif 조건 로직을 사용하는 방법을 가르치고, PowerShell 스크립트 작성자로서 이것이 어떻게 도움이 될 수 있는지 설명하겠습니다.

PowerShell If 문 사용 방법

PowerShell If 문은 코드의 조건부 실행을 수행하는 데 사용됩니다. 이를 통해 조건을 테스트하고 조건이 참 또는 거짓인지에 따라 다른 코드 블록을 실행할 수 있습니다.

두 가지 PowerShell If 문을 사용하는 방법에 대한 예제로 시작해보겠습니다.

예제 1: 숫자가 양수인지 음수인지 확인하기

다음 예제에서는 변수 $number를 10으로 설정합니다. If 문은 -gt 연산자를 사용하여 $number의 값이 0보다 큰지 확인합니다.

  • 조건이 참이면, 이 경우 첫 번째 중괄호 내의 코드 블록을 실행하여 “숫자가 양수입니다.”를 출력합니다.
  • 조건이 거짓인 경우, Elseif 블록으로 이동하여 -lt 연산자를 사용하여 숫자가 0보다 작은지 확인합니다.
  • 만약 조건이 참이면, “숫자는 음수입니다.”를 출력하는 두 번째 중괄호 내의 코드를 실행합니다.
  • 두 조건 모두 거짓인 경우, “숫자는 0입니다.”를 출력하는 else 블록 내의 코드를 실행합니다.
$number = 10

if ($number -gt 0) {
    Write-Host “The number is positive.”
} elseif ($number -lt 0) {
    Write-Host “The number is negative.”
} else {
    Write-Host “The number is zero.”
}
Checking if a number is positive or negative (Image credit: Petri/Bill Kindle)

예제 2: 파일이 존재하는지 확인하는 방법

다음 예제에서는 파일 경로로 설정된 변수 $file이 있습니다. If 문은 파일이 존재하는지 확인하기 위해 Test-Path cmdlet을 사용합니다.

  • 조건이 참이면, 즉 파일이 존재하면, “파일이 존재합니다.”를 출력하는 첫 번째 중괄호 내의 코드를 실행합니다.
  • 조건이 거짓이면, “파일이 존재하지 않습니다.”를 출력하는 else 블록 내의 코드를 실행합니다.
$file = “C:\path\to\file.txt”

if (Test-Path $file) {
    Write-Host “The file exists.”
} else {
    Write-Host “The file does not exist.”
}
Checking if a file exists (Image credit: Petri/Bill Kindle)

이것은 PowerShell에서 조건문이 작동하는 두 가지 기본 예제였습니다. 이제 Else 문으로 넘어가 봅시다.

If 문과 함께 PowerShell Else 문을 사용하는 방법

PowerShell에서는 Else 문을 If 문과 함께 사용하여 조건부 논리를 만들 수 있습니다.

조건이 거짓일 때 실행할 코드 블록을 지정할 수 있습니다.

예제 3: 변수가 숫자보다 큰지 확인하기

이 예에서 여러 가지 확인을 합니다:

  • If 문은 변수 $number가 10보다 큰지 확인합니다.
  • 만약 그렇다면, “숫자가 10보다 큽니다”라는 메시지가 표시됩니다.
  • 조건을 충족하지 못하면, Else 블록이 실행되어 “숫자가 10보다 크지 않습니다”라는 메시지가 표시됩니다.
$number = 5

if ($number -gt 10) {
    Write-Host “The number is greater than 10.”
}
else {
    Write-Host “The number is not greater than 10.”
}
Checking if a variable is greater than a number (Image credit: Petri/Bill Kindle)

예제 4: 변수의 값과 문자열 비교하기

이 예에서 If 문은 $user 변수의 값과 문자열 “John”을 비교합니다.

  • 만약 같다면, “환영합니다, John!”이라는 메시지가 표시됩니다.
  • 조건을 충족하지 못하면, 즉 $user의 값이 “John”이 아니라면, Else 블록이 실행되어 “액세스 거부. 당신은 John이 아닙니다.”라는 메시지가 표시됩니다.
$user = “John”

if ($user -eq “John”) {
    Write-Host “Welcome, John!”
}
else {
    Write-Host “Access denied. You are not John.”
}
Comparing the value of a variable with a string (Image credit: Petri/Bill Kindle)

만약그렇지 않으면 문의 차이점은 그들이 평가하는 조건과 그 후에 실행하는 동작에 있습니다.

  • 만약 문은 조건을 확인하고 조건이 참이면 코드를 실행합니다.
  • 그렇지 않으면 문은 만약 문의 조건이 거짓일 때 실행할 대체 코드 블록을 제공합니다. 만약 문의 조건이 참이면 그렇지 않으면 블록은 실행되지 않습니다.

요약하면, 만약 문은 특정 조건에 따라 코드를 실행할 수 있게 합니다. 그렇지 않으면 문은 조건이 거짓일 때 대체 옵션을 제공합니다. 이러한 문을 함께 사용하여 PowerShell 스크립트에서 더 유연하고 견고한 논리를 만들 수 있습니다.

PowerShell ElseIf 문 사용 방법

그렇지 않으면 문은 앞선 만약 문이나 이전 그렇지 않으면 문이 ‘거짓’을 평가하는 조건을 만드는 데 사용됩니다. 그렇지 않으면 문을 사용하면 여러 조건을 테스트하고 해당 조건의 평가에 따라 다른 코드 블록을 실행할 수 있습니다. 그렇지 않으면 문은 두 가지 이상의 결과가 있는 경우 특히 유용합니다.

다음은 PowerShell에서 그렇지 않으면 문의 사용 예시 두 가지입니다.

예시 5: 숫자 범위 확인

이 예에서 코드는 $number 변수의 값을 확인하고 그 범위에 따라 다른 코드 블록을 실행합니다.

  • 숫자가 10 미만인 경우 첫 번째 조건이 참이고 해당 메시지가 표시됩니다.
  • 아닌 경우 ElseIf 문을 사용하여 다음 조건을 확인합니다. 숫자가 10에서 19 사이인 경우(포함), 두 번째 조건이 참이고 해당 메시지가 표시됩니다.
  • 이전 조건 중 어느 것도 참이 아닌 경우 Else 블록이 실행되어 숫자가 20 이상임을 보여주는 메시지가 표시됩니다.
$number = 25

if ($number -lt 10) {
    Write-Host “The number is less than 10.”
}
elseif ($number -ge 10 -and $number -lt 20) {
    Write-Host “The number is between 10 and 19.”
}
else {
    Write-Host “The number is 20 or greater.”
}
Checking a number’s range (Image credit: Petri/Bill Kindle)

예제 6: 문자열 길이 확인

이 예에서 코드는 $name 문자열의 길이를 검사하고 길이에 따라 해당 카테고리를 결정합니다.

  • 이름이 10자를 초과하는 경우 첫 번째 조건이 참이고 해당 메시지가 표시됩니다.
  • 첫 번째 조건이 거짓인 경우 ElseIf 문을 사용하여 다음 조건을 확인합니다. 이름이 5자를 초과하지만 10자를 초과하지 않는 경우 두 번째 조건이 참이고 해당 메시지가 표시됩니다.
  • 이전 조건 중 어느 것도 참이 아닌 경우 Else 블록이 실행되어 이름이 5자 이하임을 보여주는 메시지가 표시됩니다.
$name = “John”

if ($name.Length -gt 10) {
    Write-Host “The name is longer than 10 characters.”
}
elseif ($name.Length -gt 5) {
    Write-Host “The name is between 6 and 10 characters.”
}
else {
    Write-Host “The name is 5 characters or shorter.”
}
Checking a string’s length (Image credit: Petri/Bill Kindle)

전반적으로 PowerShell의 ElseIf 문은 이전 문이 거짓으로 평가될 때 확인할 조건을 지정합니다. 이를 통해 여러 조건을 처리하고 다른 코드 블록을 실행할 수 있습니다.

PowerShell에서 If 문과 함께 AND/OR 문 사용하는 방법

PowerShell에서 “AND”와 “OR”은 스크립트의 흐름을 제어하기 위해 조건문에서 여러 조건을 결합하는 데 사용되는 논리 연산자입니다. 이들은 If 문과 함께 사용되어 여러 조건을 동시에 평가하는 데 사용될 수 있습니다:

사용법을 보여주고 IfElse 문과 비교했을 때의 차이점을 강조하기 위해 두 가지 예제를 제공하겠습니다.

예제 7: AND 연산자 사용

사용자가 관리자인지 확인하고 계정이 현재 활성화되어 있는지 확인하려면 PowerShell을 사용하고 싶다고 가정해보세요. 두 조건을 동시에 평가하기 위해 AND 연산자를 사용할 수 있습니다.

이 예에서 스크립트는 $isAdministrator 및 $isAccountActive 변수가 모두 true인지 확인합니다. 두 조건이 모두 true이면 사용자가 활성화된 계정을 가진 관리자임을 보여주는 메시지를 출력합니다. 그렇지 않으면 사용자가 관리자가 아니거나 계정이 비활성화되어 있는지를 보여주는 메시지를 출력합니다.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator -and $isAccountActive) {
    Write-Host “$user is an administrator with an active account.”
} else {
    Write-Host “$user is not an administrator, or their account is inactive.”
}
Checking if a user is an administrator and if their account is currently active (Image credit: Petri/Bill Kindle)

예제 8: “OR” 연산자 사용

서버가 Windows Server 2016 또는 Windows Server 2019에서 실행 중인지 확인하려면 PowerShell을 사용하여 이러한 조건을 평가할 수 있습니다.OR 연산자를 사용하여 이러한 조건을 평가할 수 있습니다.

이 예에서 스크립트는 $osVersion 변수가 “Windows Server 2016” 또는 “Windows Server 2019″와 같은지 확인하기 위해 OR 연산자를 사용합니다. 조건이 참으로평가되면 서버가 지원되는 운영 체제에서 실행 중이라는 메시지를 표시합니다. 그렇지 않으면 지원되지 않는 운영 체제에서 실행 중이라는 메시지를 표시합니다.

$server = “Server01”
$osVersion = “Windows Server 2012”

if ($osVersion -eq “Windows Server 2016” -or $osVersion -eq “Windows Server 2019”) {
    Write-Host “$server is running a supported operating system.”
} else {
    Write-Host “$server is running an unsupported operating system.”
}
Checking if our variable is equal to either Windows Server 2016 or Windows Server 2019 (Image credit: Petri/Bill Kindle)

예시 9: IfElse 문 비교

ANDOR 연산자는 여러 조건을 동시에 평가하는 간결한 방법을 제공합니다. 이들은 IfElse 문과 다르며, 후자는 한 번에 하나의 조건만을 평가합니다. IfElse 문의 조건이 참인 경우, If 문과 연결된 코드 블록을 실행합니다. 그렇지 않으면 Else 문과 연결된 코드 블록을 실행합니다.

이를 보여주기 위해 예제 1을 사용하여 IfElse 문을 대신 사용해 봅시다. 이 변경된 예에서 스크립트는 먼저 사용자가 관리자인지 확인합니다. 그 결과가 참이면, 계정이 활성화되어 있는지 확인합니다. 각 조건의 평가에 따라 다른 코드 블록을 실행합니다.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator) {
    if ($isAccountActive) {
        Write-Host “$user is an administrator with an active account.”
    } else {
        Write-Host “$user is an administrator, but their account is inactive.”
    }
} else {
    Write-Host “$user is not an administrator.”
}
Comparison with IfElse statements (Image credit: Petri/Bill Kindle)

이 접근 방식을 사용하면 스크립트의 흐름을 세밀하게 제어할 수 있습니다. 그러나 논리 연산자 “AND”와 “OR”을 사용하는 것에 비해 중첩된 코드 블록과 증가된 복잡성을 초래할 수 있습니다.

여기서 PowerShell here-strings를 If 문 내에서 사용하는 방법

PowerShell에서는 여러 줄의 문자열 리터럴을 생성하기 위해 here-strings를 사용합니다. 이들은 큰 텍스트 블록을 다룰 때나 서식을 보존해야 할 때 유용합니다.

여기-문자열은 If 문 내에서 사용될 때 문자열 값을 여러 줄의 문자열과 비교할 수 있습니다. PowerShell If 문 내에서 here-strings를 사용하는 구문은 다음과 같습니다:

if ($string -eq @’
    Multi-line
    string
    ‘@)
{
    # Code to execute if the condition is true
}
else
{
    # Code to execute if the condition is false
}

여기-문자열을 If 문에서 사용하는 방법을 이해하는 데 도움이 되도록 두 가지 예제를 제시해 드리겠습니다.

특정 메시지 확인하는 예제 10:

우리가 입력을 요청하는 PowerShell 스크립트가 있다고 가정해 봅시다. 사용자로부터 입력을 받고, 사용자가 “Hello, world!”와 같은 특정 메시지를 입력했는지 확인하려고 합니다. 사용자 입력을 예상 메시지와 비교하기 위해 여기 문자열if 문 내에서 사용할 수 있습니다.

다음 예에서 스크립트는 사용자에게 메시지를 입력하도록 요청하고, 입력을 $userInput 변수에 저장합니다. 그런 다음 if 문은 여기 문자열을 사용하여 사용자의 입력을 예상 메시지와 비교합니다. 입력이 예상 메시지와 일치하면 “사용자가 올바른 메시지를 입력했습니다” 메시지가 표시되고, 그렇지 않으면 “사용자가 다른 메시지를 입력했습니다”가 표시됩니다.

$userInput = Read-Host “Enter a message”

if ($userInput -eq @’
Hello, world!
‘@)
{
    Write-Host “User entered the correct message.”
}
else
{
    Write-Host “User entered a different message.”
}
Using here-strings to check for a specific message (Image credit: Petri/Bill Kindle)

예제 11: 스크립트 블록 비교

다음은 미리 정의된 코드 블록과 스크립트 블록을 비교하려는 또 다른 예제입니다. 여기 문자열을 사용하여 스크립트 블록을 정의하고, If 문 내에서 비교할 수 있습니다.

이 예에서는 $predefinedCode와 $userCode 두 개의 스크립트 블록이 있습니다. 사용자 코드가 미리 정의된 코드와 일치하는지 확인하려고 합니다. 여기 문자열을 사용하여 스크립트 블록을 정의하면 If 문 내에서 비교할 수 있습니다.

사용자 코드가 미리 정의된 코드와 일치하면 “사용자 코드가 미리 정의된 코드와 일치합니다” 메시지가 표시되고, 그렇지 않으면 “사용자 코드가 미리 정의된 코드와 다릅니다”가 표시됩니다.

$predefinedCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

$userCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

if ($userCode -eq $predefinedCode)
{
    Write-Host “The user code matches the predefined code.”
}
else
{
    Write-Host “The user code differs from the predefined code.”
}
Using here-strings to compare a script block (Image credit: Petri/Bill Kindle)

If 문 내에서 연결을 사용하는 방법

PowerShell에서는 ‘ + ‘ 산술 연산자를 사용하여 문자열을 연결할 수 있습니다.

If 문 내에서 연결을 사용하려면 여러 문자열 변수나 리터럴을 결합하여 새 문자열을 만듭니다. PowerShell에서 연결 사용법을 설명하는 두 가지 예제가 있습니다.

예제 12: 문자열 변수 연결

이 예에서는 두 개의 문자열 변수, $firstName과 $lastName을 정의합니다. If 문은 두 변수가 값(즉, 빈 문자열이 아님)을 가지고 있는지 확인합니다.

  • 두 조건이 모두 참이면, 우리는 + 연산자를 사용하여 이름과 성을 연결하고 결과를 $fullName 변수에 저장합니다. 그런 다음 Write-Host cmdlet을 사용하여 연결된 전체 이름을 표시합니다.
  • 첫 번째 이름 또는 성이 누락된 경우 else 블록이 실행되어 적절한 메시지가 표시됩니다.
$firstName = “John”
$lastName = “Doe”

if ($firstName -ne ” -and $lastName -ne ”) {
    $fullName = $firstName + “ “ + $lastName
    Write-Host “Full Name: $fullName”
} else {
    Write-Host “First name or last name is missing.”
}
Concatenating string variables (Image credit: Petri/Bill Kindle)

예제 13: 문자열 리터럴 연결

두 번째 예에서는 $greeting 값이 “Hello”인 $name 값이 “Alice”인 $age 값이 30인 세 가지 변수가 정의되어 있습니다. if 문은 $name 변수가 IsNullorEmpty() 메서드를 사용하여 값을 가지고 있는지 확인합니다.

  • 참이면, 우리는 인사말, 이름, 나이를 + 연산자를 사용하여 연결하는 메시지를 생성합니다. 그 결과 메시지를 $message 변수에 저장한 다음 Write-Host cmdlet을 사용하여 표시합니다.
  • 이름이 누락된 경우 (빈 문자열), else 블록이 실행되고 적절한 오류 메시지가 표시됩니다.
$greeting = “Hello”
$name = “Alice”
$age = 30

if ([string]::IsNullorEmpty($name) -eq $false){
    $message = $greeting + “, “ + $name + “! Your age is “ + $age + “.”
    Write-Host $message
} else {
    Write-Host “Name is missing.”
}
Concatenating string literals (Image credit: Petri/Bill Kindle)

전반적으로 이 두 예제는 연결 연산이 특정 조건에 따라 동적으로 문자열을 결합할 수 있게 합니다.

If 문에서 연결 문자열을 사용하는 방법

연결 문자열은 데이터베이스나 다른 외부 시스템에 연결을 설정하는 데 일반적으로 사용됩니다. 이러한 문자열에는 서버, 데이터베이스 이름, 자격 증명 및 연결을 설정하는 데 필요한 다른 매개변수에 대한 정보가 포함되어 있습니다.

만약 문에서는 연결 문자열을 사용하여 연결의 성공 또는 실패에 따라 특정 코드 블록을 실행할 수 있습니다. PowerShell If 문에서 연결 문자열의 사용법을 보여주는 두 가지 예제가 있습니다:

예제 14: 데이터베이스 연결 확인

이 예에서는 서버 이름, 데이터베이스 이름 및 자격 증명을 지정하는 연결 문자열 ($connectionString)을 정의합니다. 그런 다음 연결 문자열을 사용하여 SqlConnection 개체를 만듭니다. try 블록 내에서 $connection.Open()를 사용하여 연결을 열려고 시도합니다.

  • 연결이 성공하면 try 블록 아래에서 코드 블록이 실행되어 성공적인 연결을 보여줍니다.
  • 예외가 발생하는 경우(즉, 연결에 실패하는 경우), catch 블록 아래에서 코드 블록이 실행되어 실패한 연결을 보여줍니다.
# Define the connection string
$connectionString = “Server=server_name;Database=db_name;User Id=user_id;Password=password;"

# Create a SqlConnection object using the connection string
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

# Attempt to establish the connection
try {
    $connection.Open()
   
    # Connection successful
    Write-Host “Connected to the database.”

    # Perform additional operations on the database if needed

    # Close the connection
    $connection.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the database.”
}
Checking a database connection (Image credit: Petri/Bill Kindle)

예제 15: 네트워크 연결 확인

이 두 번째 예에서는 서버 이름과 포트 번호를 지정하는 연결 문자열 ($connectionString)을 정의합니다. 그런 다음 연결 문자열을 사용하여 TcpClient 개체를 만듭니다. try 블록 내에서 $tcpClient.Connect(”server_name”, 1234)를 사용하여 서버에 연결을 시도합니다.

  • 연결이 성공하면 try 블록 아래에서 코드 블록이 실행되어 성공적인 연결을 보여줍니다.
  • 만약 예외가 발생하면(즉, 연결이 실패하면), 코드 블록은 catch 블록 아래에서 실행되며, 연결 실패를 보여줍니다.
# Define the connection string
$connectionString = “Server=server_name;Port=1234;"

# Create a TcpClient object using the connection string
$tcpClient = New-Object System.Net.Sockets.TcpClient

# Attempt to establish the connection
try {
    $tcpClient.Connect(”server_name”, 1234)
   
    # Connection successful
    Write-Host “Connected to the server.”

    # Perform additional operations if needed

    # Close the connection
    $tcpClient.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the server.”
}
Checking a network connection (Image credit: Petri/Bill Kindle)

위의 예는 간단화되었으며, 예외가 발생하지 않으면 성공적인 연결이라고 가정합니다. 실제 시나리오에서는 예외를 적절히 처리하는 것이 중요합니다. 연결의 구체적인 요구사항에 따라 추가 오류 처리 및 인증 메커니즘을 사용해야 합니다.

If 문 내에서 Break 및 Continue 문을 사용하는 방법

PowerShell에서 BreakContinue 문은 루프 및 스위치 내에서 실행 흐름을 제어하는 데 사용됩니다. Break은 루프나 스위치를 종료하는 데 사용되고, Continue는 현재 반복을 건너뛰고 다음 반복으로 이동하는 데 사용됩니다.

이러한 문은 일반적으로 루프 내에서 사용되지만, 특정 동작을 달성하기 위해 If 문 내에서도 사용할 수 있습니다. 간단한 예제를 통해 BreakContinue를 If 문 내에서 어떻게 사용하는지 살펴보겠습니다.

예제 16: If 문에서 Break 사용하기

이 예에서는 1부터 10까지의 숫자 배열이 있습니다. 각 숫자를 반복하는 Foreach 루프를 사용합니다. 루프 내에서 현재 숫자가 6과 같은지 확인합니다.

  • 만약 그렇다면, 메시지를 표시하고 루프를 종료하기 위해 break 문을 사용합니다.
  • 숫자가 6과 같지 않다면, 현재 숫자를 간단히 표시합니다.
  • 루프가 숫자 6을 만나면, 루프를 빠져나와 프로그램이 이어지는 코드를 실행합니다.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 6) {
        Write-Host “Found the number 6. Exiting the loop.”
        break
    }
   
    Write-Host “Current number is: $number”
}
Using Break in an If statement (Image credit: Petri/Bill Kindle)

예제 17: If 문에서 Continue 사용하기

이 예에서도 1부터 10까지의 숫자 배열이 있습니다. 각 숫자를 반복하는 Foreach 루프를 사용합니다. 먼저, 현재 숫자가 3 또는 7인지 확인합니다.

  • 참이면; 메시지를 표시하고 현재 반복을 건너뛰고 다음으로 이동하기 위해 Continue 문을 사용합니다.
  • 숫자가 3 또는 7이 아니라면, 현재 숫자를 표시합니다. 루프는 모든 숫자를 평가할 때까지 계속됩니다.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 3 -or $number -eq 7) {
        Write-Host “Skipping the number $number”
        continue
    }
   
    Write-Host “Current number is: $number”
}
Using Continue in an If statement (Image credit: Petri/Bill Kindle)

두 예제 모두 특정 조건에 따라 특정 작업을 조건부로 실행하기 위해 If 문을 사용했습니다. Break 문을 사용하여 루프를 종료하거나 전환하고, Continue 문을 사용하여 현재 반복 내의 남은 코드를 건너뛰고 다음 반복으로 이동했습니다.

If 문 내에서 해시 테이블 사용 방법

PowerShell에서는 키-값 쌍을 기반으로 조건부 확인을 수행하기 위해 해시 테이블If 문 내에서 사용할 수 있습니다. 해시 테이블은 각 키가 고유한 키-값 쌍의 컬렉션입니다.

다음은 PowerShell If 문에서 해시 테이블을 사용하는 방법을 보여주는 두 가지 예제입니다.

예제 18: 해시 테이블 내에 특정 키가 있는지 확인하는 방법

이 예에서는 세 개의 키-값 쌍이 있는 $myHashtable이라는 해시 테이블이 있습니다. If 문은 ContainsKey() 메서드를 사용하여 키 “Age”가 해시 테이블에 있는지 확인합니다. 키가 존재하면, 나이가 존재한다는 메시지를 출력하고, 그렇지 않으면, 나이가 존재하지 않는다는 메시지를 출력합니다.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific key exists in the hashtable
if ($myHashtable.ContainsKey(”Age”)) {
    Write-Host “Age is present in the hashtable.”
}
else {
    Write-Host “Age is not present in the hashtable.”
}
Checking if a specific key exists in a hashtable (Image credit: Petri/Bill Kindle)

예제 19: 해시 테이블 내에 특정 값이 있는지 확인하는 방법

이 예에서도 $myHashtable이라는 동일한 해시 테이블이 있습니다. If 문은 ContainsValue() 메서드를 사용하여 값 “New York”이 해시 테이블에 있는지 확인합니다. 값이 존재하면, 도시가 뉴욕이라는 메시지를 출력하고, 그렇지 않으면, 도시가 뉴욕이 아니라는 메시지를 출력합니다.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific value exists in the hashtable
if ($myHashtable.ContainsValue(”New York”)) {
    Write-Host “The city is New York.”
}
else {
    Write-Host “The city is not New York.”
}
Checking if a specific value exists in a hashtable (Image credit: Petri/Bill Kindle)

If 문 내에서 배열 사용 방법

PowerShell에서는 배열을 사용하여 특정 조건을 확인하고 해당 조건에 따라 특정 작업을 수행할 수 있습니다. 배열을 If 문에서 사용하는 두 가지 예제를 살펴보겠습니다.

예제 20: 배열에 특정 값이 포함되어 있는지 확인하기

이 예제에서는 숫자 시퀀스를 포함하는 $numbers라는 배열이 있습니다. If 문은 -contains 연산자를 사용하여 배열이 ‘3’ 값을 포함하는지 확인합니다. 조건이 참이면 “배열에 값 3이 포함되어 있습니다.”를 출력하고, 그렇지 않으면 “배열에 값 3이 포함되어 있지 않습니다.”를 출력합니다.

# Define an array of numbers
$numbers = 1, 2, 3, 4, 5

# Check if the array contains a specific value, e.g., 3
if ($numbers -contains 3) {
    Write-Host “The array contains the value 3.”
} else {
    Write-Host “The array does not contain the value 3.”
}
Checking if an array contains a specific value (Image credit: Petri/Bill Kindle)

예제 21: 배열이 비어 있는지 확인하기

이 예제에서는 $emptyArray라는 비어 있는 배열이 있습니다. If 문은 배열의 길이 속성이 0과 같은지 확인합니다. 조건이 참이면 “배열이 비어 있습니다.”를 출력하고, 그렇지 않으면 “배열이 비어 있지 않습니다.”를 출력합니다.

# Define an empty array
$emptyArray = @()

# Check if the array is empty
if ($emptyArray.Length -eq 0) {
    Write-Host “The array is empty.”
} else {
    Write-Host “The array is not empty.”
}
Checking if an array is empty (Image credit: Petri/Bill Kindle)

PowerShell에서 Switch 문 사용 방법

PowerShell에서 Switch 문은 변수나 표현식의 값에 따라 조건 분기를 수행하는 방법을 제공합니다. 단일 값과 여러 값 중 하나를 비교하고 일치하는 경우에 따라 다른 코드 블록을 실행할 수 있습니다.

다음은 PowerShell에서 Switch 문을 사용하는 방법을 설명하는 두 가지 쉬운 예제입니다.

예제 22: 요일 확인

이 예에서는 현재 $day 변수가 될 요일을 가지고 있습니다. Switch 문은 $day의 값을 “Monday,” “Tuesday,” 등의 문자열과 비교합니다.

  • 일치하는 경우 스크립트는 해당 코드 블록을 실행합니다.
  • 일치하는 경우 Default 블록을 실행합니다. 여기서 출력은 “It’s the start of the week!”입니다.
$day = (Get-Date).DayOfWeek

switch ($day) {
    “Monday” {
        Write-Host “It’s the start of the week!”
    }
    “Tuesday” {
        Write-Host “It’s Tuesday!”
    }
    “Wednesday” {
        Write-Host “It’s the middle of the week!”
    }
    “Thursday” {
        Write-Host “It’s almost Friday!”
    }
    “Friday” {
        Write-Host “It’s finally Friday!”
    }
    Default {
        Write-Host “It’s the weekend!”
    }
}
Using a Switch statement to check for days of the week (Image credit: Petri/Bill Kindle)

예제 23: 숫자 분류

두 번째 예에서는 $number 변수가 값 42를 가지고 있습니다. Switch 문은 $number의 값을 스크립트 블록을 사용하여 다른 경우와 비교합니다. 첫 번째 경우는 숫자가 0보다 작은지 확인하고, 두 번째 경우는 숫자가 0보다 큰지 확인하며, 다른 경우와 일치하는 경우 Default 블록이 실행됩니다. 여기서 출력은 “Positive number.”입니다.

$number = 42

switch ($number) {
    { $_ -lt 0 } {
        Write-Host “Negative number”
    }
    { $_ -gt 0 } {
        Write-Host “Positive number”
    }
    Default {
        Write-Host “Zero”
    }
}
Using a Switch statement to categorize numbers (Image credit: Petri/Bill Kindle)

두 예제 모두, 일치하는 조건에 따라 원하는 작업을 수행하기 위해 각 경우의 코드 블록을 사용자 정의할 수 있습니다. Switch 문은 PowerShell에서 강력한 구조로, 여러 조건을 처리하고 코드 블록을 실행하는 우아한 방법을 제공합니다.

PowerShell 및 조건부 논리: 요약

전반적으로, If 문과 관련된 구조는 PowerShell 스크립트에서 조건부 논리를 구현하는 강력한 도구를 제공합니다. If 문은 조건을 테스트하고 조건이 참 또는 거짓인지에 따라 다른 코드 블록을 실행할 수 있도록 해 주어 코드의 조건부 실행에 중요합니다.

본문에서 제공한 예제는 PowerShell If 문을 사용하여 숫자가 양수인지 음수인지 확인하거나 파일이 있는지 확인하는 방법을 보여 주었습니다. 그러나 이 기사에서는 PowerShell 스크립트 작성자가 더 나은 방법이 되도록 도와주기 위해 다양한 조건부 논리 트릭을 자세히 설명했습니다. 여기에 제공된 정보는 상당히 밀도가 높았으므로 기억해야 할 내용은 다음과 같습니다.

  • Else 문은 If 문과 함께 사용되어 조건부 논리를 만들며, 조건이 충족되지 않을 때 대체 옵션을 제공합니다.
  • ElseIf 문은 앞의 If 또는 ElseIf 문이 거짓으로 평가될 경우에만 확인되는 조건을 생성하는 데 사용할 수 있어 더 복잡한 조건부 논리를 가능하게 합니다.
  • 논리 연산자인 AND 및 OR은 스크립트의 흐름을 제어하기 위해 If 문에서 여러 조건을 결합하는 데 사용될 수 있습니다. Here-strings은 또한 If 문 내에서 문자열 값을 여러 줄 문자열과 비교하는 데 사용될 수 있습니다.
  • ‘+’ 연산자를 사용하여 문자열을 연결하면 If 문 내에서 특정 조건에 따라 동적으로 문자열을 결합할 수도 있습니다.
  • 연결 문자열은 데이터베이스나 외부 시스템에 대한 연결의 성공 또는 실패에 따라 코드 블록을 조건부로 실행하기 위해 일반적으로 If 문에서 사용됩니다.
  • BreakContinue 문은 루프 및 스위치 실행을 제어하며 특정 동작을 달성하기 위해 If 문 내에서 사용할 수 있습니다.
  • 해시테이블과 배열은 특정 조건을 확인하고 해당 조건에 따라 작업을 수행하기 위해 If 문에서도 사용될 수 있습니다.
  • 마지막으로, Switch 문은 변수나 표현식의 값에 따라 조건 분기를 허용하여 일치에 따라 다른 코드 블록을 실행할 수 있습니다.

PowerShell If 문에 대한 이 상세 가이드를 읽어 주셔서 감사합니다. 질문이 있으시면 아래 댓글 섹션에서 자유롭게 질문해 주세요!

Source:
https://petri.com/powershell-if-statement/