about_Assignment_Operators

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

여기에 소개를 삽입합니다.

항목

about_assignment_operators

간단한 설명

변수에 값을 할당하는 연산자를 사용하는 방법에 대해 설명합니다.

자세한 설명

대입 연산자는 하나 이상의 값을 변수에 할당합니다. 할당하기 전에 값에 대해 수식 연산을 수행할 수 있습니다.

Windows PowerShell®에서는 다음 대입 연산자를 지원합니다.

    Operator  Description  
    -------   -----------
    =         Sets the value of a variable to the specified value.

    +=        Increases the value of a variable by the specified value, or 
              appends the specified value to the existing value.

    -=        Decreases the value of a variable by the specified value.
 
    *=        Multiplies the value of a variable by the specified value, or
              appends the specified value to the existing value.
 
    /=        Divides the value of a variable by the specified value.
 
    %=        Divides the value of a variable by the specified value and 
              then assigns the remainder (modulus) to the variable.

    ++        Increases the value of a variable, assignable property, or 
              array element by 1.

    --        Decreases the value of a variable, assignable property, or 
              array element by 1.

구문

대입 연산자의 구문은 다음과 같습니다.

<assignable-expression> <assignment-operator> <value>

대입식에는 변수와 속성이 있습니다. 값은 단일 값, 값 배열, 명령, 식 또는 문이 될 수 있습니다.

증가 및 감소 연산자는 단항 연산자입니다. 각각에는 접두사 및 접미사 버전이 있습니다.

        <assignable-expression><operator>
        <operator><assignable-expression>

대입식은 숫자이거나 숫자로 변환할 수 있어야 합니다.

할당 값

변수는 값을 저장하는 명명된 메모리 공간입니다. 대입 연산자(=)를 사용하여 변수에 값을 저장합니다. 새 값은 변수의 기존 값을 대체하거나 새 값을 기존 값에 추가할 수 있습니다.

기본 대입 연산자는 등호(=)(ASCII 61)입니다. 예를 들어 다음 명령은 Windows PowerShell 값을 $MyShell 변수 값을 할당합니다.

        $MyShell = "Windows PowerShell" 

값을 Windows PowerShell의 변수에 할당하면, 변수가 존재하지 않은 경우 변수가 만들어집니다. 예를 들어 다음 두 대입문 중 첫 번째는 $a 변수를 만들고 값 6을 $a에 할당합니다. 두 번째 대입문은 값 12를 $a에 할당합니다. 첫 번째 문은 새 변수를 만듭니다. 두 번째 문은 다음과 같이 값만 변경합니다.

        $a = 6
        $a = 12

변수를 캐스팅하지 않은 경우 Windows PowerShell의 변수는 특정 데이터 유형을 가지지 않습니다. 변수에 한 개의 개체만 있는 경우 변수는 해당 개체의 데이터 유형을 취합니다. 변수에 개체 컬렉션이 있는 경우 변수는 System.Object 데이터 유형을 가집니다. 따라서 개체 유형을 컬렉션을 할당할 수 있습니다. 다음 예제에서는 프로세스 개체, 서비스 개체, 문자열, 정수를 오류 발생 없이 변수에 추가할 수 있습니다.

        $a = get-process
        $a += get-service
        $a += "string"
        $a += 12

대입 연산자(=)가 파이프라인 연산자(|)보다 우선 순위가 낮기 때문에 명령 파이프라인의 결과를 변수에 할당하는 데 괄호가 필요하지 않습니다. 예를 들어 다음 명령은 컴퓨터의 서비스를 정렬한 다음 정렬된 서비스를 $a variable에 할당합니다.

        $a = get-service | sort name

또한 다음 예제와 같이 문에서 만들어진 값을 변수에 할당할 수 있습니다.

        $a = if ($b -lt 0) { 0 } else { $b }

이 예제는 값 $b가 0보다 적은 경우 0을 $a 변수에 할당합니다. 값 $b가 0보다 적지 않은 경우 값 $b를 $a에 할당합니다.

대입 연산자(=)

대입 연산자(=)는 값을 변수에 할당합니다. 변수가 이미 값을 가진 경우 대입 연산자(=)는 경고 없이 값을 대체합니다.

다음 문은 정수 값 6을 $a 변수에 할당합니다.

        $a = 6 

문자열 값을 변수에 할당하려면 다음과 같이 문자열 값을 따옴표로 묶습니다.

        $a = "baseball" 

배열(여러 개의 값)을 변수에 할당하려면 다음과 같이 쉼표로 값을 구분합니다.

        $a = "apple", "orange", "lemon", "grape"

해시 테이블을 변수에 할당하려면 Windows PowerShell에서 표준 해시 테이블 표기법을 사용합니다. 세미콜론(;)로 구분되고 중괄호({ })로 묶여 있는 키/값 쌍 다음에 기호(@)를 입력합니다. 예를 들어 해시 테이블을 $a 변수에 할당하려면 다음을 입력합니다.

        $a = @{one=1; two=2; three=3} 

16진수 값을 변수에 할당하려면 값 앞에 "0x"을 추가합니다. Windows PowerShell은(는) 16진수(0x10)를 10진수(이 경우, 16)로 변환하고 해당 값을 $a 변수에 할당합니다. 예를 들어 값 0x10을 $a 변수에 할당하려면 다음을 입력합니다.

        $a = 0x10 

지수 값을 변수에 할당하려면 제곱근 수, 문자 "e", 10의 배수를 나타내는 수를 입력합니다. 예를 들어 값 3.1415의 1,000제곱을 $a 변수에 할당하려면 다음을 입력합니다.

        $a = 3.1415e3 

또한 Windows PowerShell은(는) 킬로바이트(KB), 메가바이트(MB), 기가바이트(GB)를 바이트로 변환할 수 있습니다. 예를 들어 값 10킬로바이트를 $a 변수에 할당하려면 다음을 입력합니다.

        $a = 10kb

더하기 대입 연산자(+=)

더하기 대입 연산자(+=)는 변수 값을 더하거나 지정된 값을 기존 값에 추가합니다. 작업은 변수가 숫자인지 문자열 형식인지 그리고 변수에 단일 값(스칼라)을 포함하는지 여러 개의 값(컬렉션)을 포함하는지에 따라 달라집니다.

+= 연산자는 두 개의 연산자가 결합되어 있습니다. 먼저 더하고, 그런 다음 할당합니다. 따라서 다음 문과 동일합니다.

        $a += 2
        $a = ($a + 2)

변수에 단일 숫자 값이 있는 경우 += 연산자는 연산자의 오른쪽에 있는 양만큼 기존 값을 증가시킵니다. 그런 다음 연산자는 결과 값을 변수에 할당합니다. 다음 예제에서는 += 연산자를 사용하여 변수 값을 증가시키는 방법을 보여줍니다.

        C:\PS> $a = 4
        C:\PS> $a += 2
        C:\PS> $a
        6

변수 값이 문자열인 경우 다음과 같이 연산자의 오른쪽에 있는 값이 문자열에 추가됩니다.

        C:\PS> $a = "Windows"
        C:\PS> $a += " PowerShell"
        C:\PS> $a
        Windows PowerShell 

변수 값이 배열인 경우 += 연산자는 연산자의 오른쪽에 있는 값을 배열에 추가합니다. 캐스팅함으로써 명시적으로 배열을 입력하지 않은 경우 다음과 같이 값 유형을 배열에 추가할 수 있습니다.

        C:\PS> $a = 1,2,3
        C:\PS> $a += 2
        C:\PS> $a
        1
        2
        3
        2
        C:\PS> $a += "String"
        C:\PS> $a
        1
        2
        3
        2
        String

변수 값이 해시 테이블인 경우 += 연산자는 연산자의 오른쪽에 있는 값을 해시 테이블에 추가합니다. 그러나 해시 테이블에 추가할 수 있는 유형만 또 다른 해시 테이블이 될 수 있기 때문에 다른 모든 할당은 실패합니다.

예를 들어 다음 명령은 해시 테이블을 $a 변수에 할당합니다. 그런 다음 += 연산자를 사용하여 또 다른 해시 테이블을 기존 해시 테이블에 추가함으로써, 새 키/값 쌍을 기존 해시 테이블에 효과적으로 추가합니다. 출력에서 나타난 대로 이 명령은 성공합니다.

        C:\PS> $a = @{a = 1; b = 2; c = 3}
        C:\PS> $a += @{mode = "write"}
        C:\PS> $a
        Name                           Value
        ----                           -----
        a                              1
        b                              2
        mode                           write
        c                              3

다음 명령으로 정수(1)을 $a 변수의 해시 테이블에 추가하려 합니다. 이 명령은 실패합니다.

        C:\PS> $a = @{a = 1; b = 2; c = 3}
        C:\PS> $a += 1
        You can add another hash table only to a hash table.
        At line:1 char:6
        + $a += <<<<  1

빼기 대입 연산자(-=)

빼기 대입 연산자(-=)는 연산자의 오른쪽에 지정된 값만큼 변수 값을 감소시킵니다. 이 연산자는 문자열 변수와 함께 사용할 수 없으며, 컬렉션의 요소를 제거하는 데도 사용할 수 없습니다.

-= 연산자는 두 개의 연산자가 결합되어 있습니다. 먼저 빼고, 그런 다음 할당합니다. 따라서 다음 문과 동일합니다.

        $a -= 2
        $a = ($a - 2)

다음 예제에서는 -= 연산자를 사용하여 변수 값을 감소시키는 방법을 보여줍니다.

        C:\PS> $a = 8
        C:\PS> $a -= 2
        C:\PS> $a
        6

또한 -= 대입 연산자를 사용하여 숫자 배열의 구성 값을 감소시킬 수 있습니다. 이렇게 하려면 변경하려는 배열 요소의 지수를 지정합니다. 다음 예제에서는 배열(element 2)의 세 번째 요소 값은 1씩 감소합니다.

        C:\PS> $a = 1,2,3
        C:\PS> $a[2] -= 1.
        C:\PS> $a
        1
        2
        2

-= 연산자를 사용하여 변수 값을 삭제할 수 없습니다. 변수에 할당된 모든 값을 삭제하려면 Clear-Item 또는 Clear-Variable cmdlet을 사용하여 $null 또는 "" 값을 변수에 할당합니다.

        $a = $null 

배열에서 특정 값을 삭제하려면 배열 표기법을 사용하여 $null 값을 특정 항목에 할당합니다. 예를 들어 다음 문은 배열에서 두 번째 값(인덱스 위치 1)을 삭제합니다.

        C:\PS> $a = 1,2,3
        C:\PS> $a
        1
        2
        3

        C:\PS> $a[1] = $null
        C:\PS> $a
        1
        3

변수를 삭제하려면 Remove-Variable cmdlet을 사용합니다. 이 방법은 변수가 특정 데이터 유형에 명시적으로 캐스팅하여 입력하지 않은 변수만 찾을 때 유용합니다. 다음 명령은 $a 변수를 삭제합니다.

        remove-variable a

곱하기 대입 연산자(*=)

곱하기 대입 연산자(*=)는 숫자 값을 곱하거나 변수의 문자열 값 복사본의 지정된 숫자를 추가합니다.

변수에 단일 숫자 값이 있는 경우 해당 값은 연산자의 오른쪽에 있는 값만큼 곱해집니다. 예를 들어 다음 예제에서는 *= 연산자를 사용하여 변수 값을 곱하는 방법을 보여줍니다.

        C:\PS> $a = 3
        C:\PS> $a *= 4
        C:\PS> $a
        12

이 경우 *= 연산자는 두 개의 연산자가 결합되어 있습니다. 먼저 곱하고, 그런 다음 할당합니다. 따라서 다음 문과 동일합니다.

        $a *= 2
        $a = ($a * 2)

변수에 단일 값이 있는 경우 Windows PowerShell은(는) 다음과 같이 지정된 문자열 수를 값에 추가합니다.

        C:\PS> $a = "file"
        C:\PS> $a *= 4 
        C:\PS> $a
        filefilefilefile

배열 요소를 곱하려면 인덱스를 사용하여 곱하려는 요소를 식별합니다. 예를 들어 다음 명령은 배열의 첫 번째 요소(인덱스 위치 0)에 2를 곱합니다.

        $a[0] *= 2

나누기 대입 연산자(/=)

나누기 대입 연산자(/=)는 연산자의 오른쪽에 지정된 값만큼 숫자 값을 나눕니다. 연산자는 문자열 변수와 함께 사용할 수 없습니다.

/= 연산자는 두 개의 연산자가 결합되어 있습니다. 먼저 나누고, 그런 다음 할당합니다. 따라서 다음 두 개의 문과 동일합니다.

        $a /= 2
        $a = ($a / 2)

예를 들어 다음 연산자는 / = 연산자를 사용하여 변수 값을 나누는 방법을 보여줍니다.

        C:\PS> $a = 8
        C:\PS> $a /=2
        C:\PS> $a
        4

배열 요소를 나누려면 인덱스를 사용하여 나누려는 요소를 식별합니다. 예를 들어 다음 명령은 배열의 두 번째 요소(인덱스 위치 1)를 2로 나눕니다.

        $a[1] /= 2

모듈러스 대입 연산자(%=)

모듈러스 대입 연산자(%=)는 연산자의 오른쪽에 있는 값만큼 변수 값을 나눕니다. 그런 다음 %= 연산자는 나머지(모듈러스라고 함)를 변수에 할당합니다. 변수에 단일 숫자 값이 있는 경우에만 이 연산자를 사용할 수 있습니다. 변수에 문자열 변수 또는 배열이 있는 경우에 이 연산자를 사용할 수 없습니다.

%= 연산자는 두 개의 연산자가 결합되어 있습니다. 먼저 나누고 나머지를 구한 다음, 나머지를 변수에 할당합니다. 따라서 다음 문과 동일합니다.

        $a %= 2
        $a = ($a % 2)

다음 예제에서는 %= 연산자를 사용하여 몫의 나머지를 저장하는 방법을 보여줍니다.

        C:\PS> $a = 7
        C:\PS> $a %= 4
        C:\PS> $a
        3

증가 및 감소 연산자

증가 연산자(++)는 변수 값을 1씩 증가시킵니다. 간단한 문에서 증가 연산자를 사용하는 경우 값이 반환되지 않습니다. 결과를 보려면 다음과 같이 변수 값을 표시합니다.

        C:\PS> $a = 7
        C:\PS> ++$a
        C:\PS> $a
        8

값을 강제로 반환하려면 다음과 같이 변수와 연산자를 괄호로 묶습니다.

        C:\PS> $a = 7
        C:\PS> (++$a)
        8

증가 연산자는 변수 앞(접두사) 또는 뒤(접미사)에 배치할 수 있습니다. 연산자의 접두사 버전은 다음과 같이 값이 문에서 사용되기 전에 변수를 증가시킵니다.

        C:\PS> $a = 7
        C:\PS> $c = ++$a
        C:\PS> $a
        8
        C:\PS> $c
        8

연산자의 접미사 버전은 다음과 같이 값이 문에서 사용된 후에 변수를 증가시킵니다. 다음 예제에서 $a가 변경되기 전에 값을 $c에 할당하기 때문에 $c와 $a 변수는 다른 값을 가집니다.

        C:\PS> $a = 7
        C:\PS> $c = $a++
        C:\PS> $a
        8
        C:\PS> $c
        7

감소 연산자(--)는 변수 값을 1씩 감소시킵니다. 증가 연산자와 마찬가지로 간단한 문에서 연산자를 사용하는 경우 값이 반환되지 않습니다. 값을 반환하려면 다음과 같이 괄호를 사용합니다.

        C:\PS> $a = 7
        C:\PS> --$a
        C:\PS> $a
        6
        C:\PS> (--$a)
        5

연산자의 접두사 버전은 다음과 같이 값이 문에서 사용되기 전에 변수를 감소시킵니다.

        C:\PS> $a = 7
        C:\PS> $c = --$a
        C:\PS> $a
        6
        C:\PS> $c
        6

연산자의 접미사 버전은 다음과 같이 값이 문에서 사용된 후에 변수를 감소시킵니다. 다음 예제에서 $a가 변경되기 전에 값을 $d에 할당하기 때문에 $d와 $a 변수는 다른 값을 가집니다.

        C:\PS> $a = 7
        C:\PS> $d = $a--
        C:\PS> $a
        6
        C:\PS> $d
        7

MICROSOFT .NET FRAMEWORK 유형

기본적으로 변수가 하나의 값만 가지는 경우 변수에 할당된 값이 변수의 데이터 유형을 결정합니다. 예를 들어 다음 명령은 정수(System.Int32) 유형을 가지는 변수를 만듭니다.

        $a = 6 

변수의 .NET Framework 유형을 찾으려면 다음과 같이 GetType 메서드와 그 FullName 속성을 사용합니다. 메서드 호출이 인수를 가지지 않더라도 GetType 메서드 이름 다음에 괄호를 포함하세요.

        C:\PS> $a = 6 
        C:\PS> $a.gettype().fullname 
        System.Int32 

문자열을 포함하는 변수를 만들려면 문자열 값을 변수에 할당합니다. 값이 문자열임을 나타내려면 다음과 같이 따옴표로 묶습니다.

        C:\PS> $a = "6"
        C:\PS> $a.gettype().fullname
        System.String

변수에 할당된 첫 번째 값이 문자열인 경우 Windows PowerShell은(는) 모든 연산을 문자열 연산으로 처리하고 새 값을 문자열에 캐스팅합니다. 이러한 경우는 다음 예제에 나와 있습니다.

        C:\PS> $a = "file"
        C:\PS> $a += 3
        C:\PS> $a
        file3

첫 번째 값이 정수인 경우, Windows PowerShell은(는) 모든 연산을 정수 연산으로 처리하고 새 값을 정수에 캐스팅합니다. 이러한 경우는 다음 예제에 나와 있습니다.

        C:\PS> $a = 6
        C:\PS> $a += "3"
        C:\PS> $a
        9

변수 이름 또는 첫 번째 할당 값을 앞에 대괄호로 묶어 유형 이름을 배치함으로써 새 스칼라 변수를 .NET Framework 유형으로 캐스팅할 수 있습니다. 변수를 캐스팅할 때 변수에 저장할 수 있는 데이터 유형을 확인할 수 있습니다. 그리고 변수를 조작할 때 변수가 동작하는 방식을 확인할 수 있습니다.

예를 들어 다음 명령은 변수를 문자열 유형으로 캐스팅합니다.

        C:\PS> [string]$a = 27
        C:\PS> $a += 3
        C:\PS> $a
        273

다음 예제에서는 변수를 캐스팅하는 대신 첫 번째 값을 캐스팅합니다.

        $a = [string]27

변수를 특정 유형에 캐스팅하는 경우 일반적으로 값이 아닌 변수를 캐스팅합니다. 그러나 값이 새로운 데이터 유형으로 변환할 수 없는 경우 기존 변수의 데이터 유형을 다시 캐스팅할 수 없습니다. 데이터 유형을 변경하려면 다음과 같이 값을 대체해야 합니다.

        C:\PS> $a = "string"
        C:\PS> [int]$a
        Cannot convert value "string" to type "System.Int32". Error: "Input
        string was not in a correct format."
        At line:1 char:8
        + [int]$a <<<<

        C:\PS> [int]$a =3

그리고 가진 변수 이름에 데이터 유형을 앞에 두면, 또 다른 데이터 유형을 지정하여 유형을 명시적으로 재정의하지 않은 한 해당 변수 유형은 고정됩니다. 기존 유형과 호환되지 않는 값을 할당하려 하고 유형을 명시적으로 재정의하지 않은 경우, Windows PowerShell은(는) 다음 예제와 같이 오류를 표시합니다.

        C:\PS> $a = 3
        C:\PS> $a = "string"

        C:\PS> [int]$a = 3
        C:\PS> $a = "string"
        Cannot convert value "string" to type "System.Int32". Error: "Input
        string was not in a correct format."
        At line:1 char:3
        + $a <<<<  = "string"

        C:\PS> [string]$a = "string"

Windows PowerShell에서 배열에 여러 항목이 있는 변수의 데이터 유형은 한 항목이 있는 변수의 데이터 유형과 다르게 취급됩니다. 데이터 유형이 배열 변수에 명확하게 할당되지 않은 경우 데이터 유형은 항상 System.Object []입니다. 이 데이터 유형은 배열에 적용됩니다.

간혹 다은 유형을 지정하여 기본 유형을 재정의하기도 합니다. 예를 들어 다음 명령은 변수를 문자열 [] 배열 유형으로 캐스팅합니다.

        [string []] $a = "one", "two", "three"

Windows PowerShell 변수는 .NET Framework 데이터 유형이 될 수 있습니다. 또한 현재 프로세스에서 사용할 수 있는 정규화된 .NET Framework 데이터 유형을 할당할 수 있습니다. 예를 들어 다음 명령은 System.DateTime 데이터 유형을 지정합니다

        [system.datetime]$a = "5/31/2005"

변수는 System.DateTime 데이터 유형을 준수하는 값을 할당합니다. $a 변수 값은 다음과 같습니다.

        Tuesday, May 31, 2005 12:00:00 AM

여러 개의 변수 할당

Windows PowerShell에서는 하나의 명령을 사용하여 값을 여러 개의 변수에 할당할 수 있습니다. 할당 값의 첫 번째 요소가 첫 번째 변수에 할당되고, 두 번째 요소는 두 번째 변수에, 세 번째 요소는 세 번째 요소 등과 같은 방식으로 할당됩니다. 예를 들어 다음 명령은 값 1을 $a 변수에 할당하고, 값 2를 $b 변수에, 값 3을 $c 변수에 할당합니다.

        C:\PS> $a, $b, $c = 1, 2, 3

할당 값에 변수보다 많은 요소가 있는 경우 나머지 모든 값은 마지막 변수에 할당됩니다. 예를 들어 다음 명령은 세 개의 매개 변수와 다섯 개의 값을 포함합니다.

        $a, $b, $c = 1, 2, 3, 4, 5

따라서, Windows PowerShell은(는) 값 1을 $a 변수에, 값 2를 $b 변수로 할당합니다. 또 값 3, 4, 5는 $c 변수에 할당합니다. $c 변수의 값을 다른 세 개의 변수에 할당하려면 다음 형식을 사용합니다.

        $d, $e, $f = $c

이 명령은 값 3을 $d 변수에, 값 4를 $e 변수에, 값 5를 $f 변수에 할당합니다.

또한 변수를 연결하여 하나의 명령을 여러 개의 변수에 할당할 수 있습니다. 예를 들어 다음 명령은 "three" 값을 네 개의 변수에 모두 할당합니다.

        $a = $b = $c = $d = "three"

대입 연산자를 사용하여 변수 값을 설정하는 것 외에도 Set-Variable cmdlet을 사용할 수도 있습니다. 예를 들어 다음 명령은 Set-Variable cmdlet을 사용하여 1, 2, 3 배열을 $a 변수에 할당합니다.

        Set-Variable -name a -value 1, 2, 3 

참고 항목

about_arrays

about_Hash_Tables

about_Variables

Clear-Variable

Remove-Variable

Set-Variable