항목
    about_assignment_operators

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


자세한 설명
    할당 연산자는 변수에 하나 이상의 값을 할당하며, 할당 전에 값에 대한 숫자 연산을 수행할 수 있습니다.


    Windows PowerShell에서는 다음과 같은 할당 연산자를 지원합니다.


    연산자  설명  
    -------   -----------
    =         변수 값을 지정된 값으로 설정합니다.

    +=        변수 값을 지정된 값만큼 늘리거나, 기존 값에 지정된 값을 추가합니다.
 
    -=        변수 값을 지정된 값만큼 줄입니다.
 
    *=        변수 값에 지정된 값을 곱하거나, 기존 값에 지정된 값을 추가합니다.
 
    /=        변수 값을 지정된 값으로 나눕니다.
 
    %=        변수 값을 지정된 값으로 나눈 다음에 나머지(모듈러스)를 변수에 할당합니다.

    ++        변수, 할당 가능한 속성 또는 배열 요소 값을 1씩 늘립니다.

    --        변수, 할당 가능한 속성 또는 배열 요소 값을 1씩 줄입니다.
 

  구문
    할당 연산자의 구문은 다음과 같습니다.


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


    할당 가능한 식에는 변수와 속성이 포함됩니다. 값은 단일 값, 값 배열, 명령, 식 또는 문일 수 있습니다.


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


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


    할당 가능한 식은 숫자이거나 숫자로 변환할 수 있어야 합니다.


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


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


        $MyShell = "Windows PowerShell" 


    Windows PowerShell에서 변수에 값을 할당할 때 변수가 없으면 변수가 만들어집니다. 예를 들어, 다음 두 
    대입문 중 첫 번째 대입문은 $a 변수를 만들고 $a에 값 6을 할당합니다. 두 번째 대입문은 $a에 값 12를 
    할당합니다. 첫 번째 문은 새 변수를 만들고, 두 번째 문은 값만 변경합니다.


        $a = 6
        $a = 12

 
    Windows PowerShell의 변수를 캐스팅해야 Windows PowerShell의 변수가 특정 데이터 유형을 
    갖게 됩니다. 변수에 개체가 하나만 포함되면 변수는 이 개체의 데이터 유형을 사용합니다. 변수에 개체 
    컬렉션이 포함되면 변수의 데이터 유형은 System.Object입니다. 따라서 모든 유형의 개체를 컬렉션에 
    할당할 수 있습니다. 다음 예에서는 오류를 생성하지 않고 변수에 프로세스 개체, 서비스 개체, 문자열 및 
    정수를 더할 수 있음을 보여 줍니다. 


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

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


        $a = get-service | sort name


    다음 예와 같이 문에서 생성된 값을 변수에 할당할 수도 있습니다. 


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


    이 예에서는 $b의 값이 0보다 작으면 $a 변수에 0을 할당하고, $b의 값이 0보다 작지 않으면 $a에 $b의 
    값을 할당합니다. 

 

  할당 연산자(=)
    할당 연산자(=)는 변수에 값을 할당합니다. 변수에 값이 이미 있으면 할당 연산자(=)는 경고 없이 값을 
    대체합니다.


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


        $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 변수에 이 값을 할당합니다. 예를 들어, $a 변수에 값 
    0x10을 할당하려면 다음을 입력합니다.


        $a = 0x10 


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


        $a = 3.1415e3 


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


        $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


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


        C:\PS> $a = @{a = 1; b = 2; c = 3}
        C:\PS> $a += 1
        해시 테이블에는 다른 해시 테이블만 더할 수 있습니다.
        줄:1 문자:6
        + $a += <<<< 1


  빼기 할당 연산자(-=)
    빼기 할당 연산자(-=)는 연산자 오른쪽에 지정된 값만큼 변수 값을 줄입니다.
    이 연산자를 문자열 변수와 함께 사용하거나 컬렉션에서 요소를 제거하는 데 사용할 수 없습니다.


    -= 연산자는 두 연산을 결합합니다. 먼저 뺀 다음에 할당합니다. 결과적으로 다음 두 문은 같습니다.


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

 
    다음 예에서는 -= 연산자를 사용하여 변수 값을 줄이는 방법을 보여 줍니다.


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

 
    -= 할당 연산자를 사용하여 숫자 배열 멤버의 값을 줄일 수도 있습니다. 이렇게 하려면 변경할 배열 요소의 
    인덱스를 지정합니다. 다음 예에서는 배열의 세 번째 요소(요소 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

 
    변수에 할당된 첫 번째 값이 문자열이면 모든 연산이 문자열 연산으로 처리되고 새 값이 문자열로 
    캐스팅됩니다. 다음 예와 같습니다.


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

 
    첫 번째 값이 정수이면 모든 연산이 정수 연산으로 처리되고 새 값이 정수로 캐스팅됩니다. 다음 예와 
    같습니다.


        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
        값 "string"을(를) "System.Int32" 유형으로 변환할 수 없습니다. 오류: "입력 문자열의 
        형식이 올바르지 않습니다."
        줄:1 문자:8
        + [int]$a <<<<

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

    또한 변수 이름 앞에 데이터 유형을 붙이면 다른 데이터 유형을 지정하여 유형을 명시적으로 재정의하지 
    않는 한 해당 변수의 유형이 잠깁니다. 기존 유형과 호환되지 않는 값을 할당하려고 할 경우 유형을 
    명시적으로 재정의하지 않으면 다음 예와 같이 오류가 발생합니다.


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

        C:\PS> [int]$a = 3
        C:\PS> $a = "string"
        값 "string"을(를) "System.Int32" 유형으로 변환할 수 없습니다. 오류: "입력 문자열의 
        형식이 올바르지 않습니다."
        줄:1 문자:3
        + $a <<<< = "string"

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

    Windows PowerShell에서 배열에 여러 항목이 포함된 변수의 데이터 유형은 단일 항목이 포함된 변수의 
    데이터 유형과 다르게 처리됩니다. 명시적으로 데이터 유형을 배열 변수에 할당하지 않는 한 데이터 
    유형은 항상 System.Object []입니다. 이 데이터 유형은 배열에 따라 다릅니다.


    경우에 따라 다른 유형을 지정하여 기본 유형을 재정의할 수도 있습니다. 예를 들어, 다음 명령은 변수를 
    string[] 배열 유형으로 캐스팅합니다.



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

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


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

 
    그러면 System.DateTime 데이터 유형을 따르는 값이 변수에 할당됩니다. $a 변수의 값은 다음과 같습니다.


        2005년 5월 31일 화요일 오전 12:00:00


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


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

 
    할당 값에 변수보다 많은 요소가 포함되면 나머지 값은 모두 마지막 변수에 할당됩니다. 예를 들어, 다음 
    명령에는 변수 3개와 값 5개가 포함됩니다.


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

 
    결과적으로 Windows PowerShell에서 $a 변수에 값 1을 할당하고 $b 변수에 값 2를 할당하며 $c 변수에 
    값3, 4, 5를 할당합니다. $c 변수 값을 다른 세 변수에 할당하려면 다음 형식을 사용합니다.


        $d, $e, $f = $c


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


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


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

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


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

참고 항목
    about_Arrays
    about_Hash_Tables
    about_Variables
    Clear-Variable
    Remove-Variable
    Set-Variable




목차