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