항목
about_Hash_Tables
간단한 설명
Windows PowerShell에서 해시 테이블을 만들고, 사용하고, 정렬하는 방법을 설명합니다.
자세한 설명
해시 테이블은 사전 또는 결합형 배열이라고도 하며, 하나 이상의 이름/값 쌍을 저장하는 간단한 데이터
구조입니다. 예를 들어 해시 테이블에 일련의 이름과 직원 ID, 컴퓨터 이름과 IP 주소 또는 메시지 ID와
메시지 텍스트가 포함될 수 있습니다.
해시 테이블은 데이터 찾기 및 검색에 효율적이므로 자주 사용됩니다. Windows PowerShell에서는 해시
테이블을 사용하여 목록을 저장하고 계산된 속성을 만들 수 있습니다. 또한 Windows PowerShell에는
문자열을 해시 테이블로 변환하는 cmdlet인 ConvertFrom-StringData가 있습니다.
해시 테이블 만들기
해시 테이블의 항목은 다음과 같은 이름/값 쌍으로 정렬됩니다.
Msg1="Please enter your password."
Msg2="The path parameter is required."
Msg3="The alias of Get-Command is gcm."
값은 이름에 매핑되거나 연결되므로 이름을 전송하면 값이 반환됩니다.
Windows PowerShell에서 해시 테이블의 구문은 다음과 같습니다.
@{ <name> = <value>; [<name> = <value> ] ...}
해시 테이블을 만들 때에는 다음 지침을 따릅니다.
- 해시 테이블은 @ 기호로 시작합니다.
- 해시 테이블을 중괄호({})로 묶습니다.
- 해시 테이블의 내용으로 하나 이상의 이름-값 쌍을 입력합니다.
- 등호(=)를 사용하여 값과 이름을 구분합니다.
- 세미콜론(;)을 사용하여 이름/값 쌍을 구분합니다
- 이름이나 값에 공백이 포함된 경우 따옴표로 묶습니다.
예를 들어 위의 사용자 메시지의 해시 테이블 모양은 다음과 같습니다.
@{
Msg1="암호를 입력하십시오."
Msg2="경로 매개 변수는 필수 사항입니다.";
Msg3="Get-Command의 별칭은 gcm입니다.";
}
스크립트와 명령에 해시 테이블을 사용하려면 변수에 저장합니다. 변수 값은 해시 테이블
개체(System.Collections.Hashtable)이며 이름/값 쌍의 각 이름은 해시 테이블 개체의 속성입니다.
다음 명령은 $a 변수에 사용자-메시지 해시 테이블을 저장하고 점 방법을 사용하여 값을 표시합니다.
C:\PS> $a = @{
>> Msg1="암호를 입력하십시오.";
>> Msg2="경로 매개 변수는 필수 사항입니다.";
>> Msg3="Get-Command의 별칭은 gcm입니다.";
>> }
C:\PS> $a
이름 값
---- ---
Msg1 암호를 입력하십시오.
Msg3 Get-Command의 별칭은 gcm입니다.
Msg2 경로 매개 변수는 필수 사항입니다.
C:\PS> $a.Msg1
암호를 입력하십시오.
해시 테이블은 한 가지 데이터 유형으로 제한되지 않습니다. 해시 테이블에 임의 데이터 유형을 입력하고
단일 해시 테이블에서 데이터 유형을 결합할 수 있습니다. 예를 들어 정수, cmdlet 호출 및 문자열이 포함된
해시 테이블을 작성할 수 있습니다.
해시 테이블 정렬
해시 테이블을 키 또는 값을 기준으로 사전순으로 정렬하려면 해시 테이블의 GetEnumerator 메서드를
사용하여 해시 테이블에서 키와 값을 가져온 다음 Sort-Object cmdlet을 사용하여 키와 값을
정렬합니다.
예를 들어 다음 명령은 해시 테이블을 키를 기준으로 한 사전순으로 $a에 정렬합니다.
C:\PS> $a.getenumerator() | sort-object -property key
이름 값
---- -----
Msg1 암호를 입력하십시오.
Msg2 경로 매개 변수는 필수 사항입니다.
Msg3 Get-Command의 별칭은 gcm입니다.
다음 명령은 같은 메서드를 사용하여 해시 값을 내림차순으로 정렬합니다.
C:\PS> $a.getenumerator() | sort-object -property value
-descending
이름 값
---- -----
Msg2 경로 매개 변수는 필수 사항입니다.
Msg3 Get-Command의 별칭은 gcm입니다.
Msg1 암호를 입력하십시오.
ConvertFrom-StringData
ConvertFrom-StringData cmdlet은 이름/값 쌍의 문자열 또는 here-string을 해시
테이블로 변환합니다. 스크립트의 Data 섹션에서 ConvertFrom-StringData cmdlet을 안전하게
사용하고, Import-LocalizedData cmdlet과 함께 사용하여 현재 사용자의 UI(사용자 인터페이스)
culture에 사용자 메시지를 표시할 수 있습니다.
Here-string은 해시 테이블의 값에 따옴표가 포함되어 있는 경우 특히 유용합니다. here-string에 대한
자세한 내용은 about_Quoting_Rules를 참조하십시오.
다음 예에서는 위의 예에서 사용자 메시지의 here-string을 만드는 방법과 ConvertFrom-StringData를
사용하여 문자열의 here-string을 해시 테이블로 변환하는 방법을 보여 줍니다.
다음 명령은 이름/값 쌍의 here-string을 만든 다음 $string 변수에 저장합니다.
C:\PS> $string = @"
Msg1="암호를 입력하십시오."
Msg2="경로 매개 변수는 필수 사항입니다."
Msg3="Get-Command의 별칭은 gcm입니다."
"@
이 명령은 ConvertFrom-StringData cmdlet을 사용하여 here-string을 해시 테이블로 변환합니다.
C:\PS> convertfrom-stringdata $string
이름 값
---- -----
Msg3 "Get-Command의 별칭은 gcm입니다."
Msg2 "경로 매개 변수는 필수 사항입니다."
Msg1 "암호를 입력하십시오."
참고 항목
about_Arrays
about_Quoting_Rules
about_Script_Internationalization
ConvertFrom-StringData
Import-LocalizedData