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