다음을 통해 공유


about_Hash_Tables

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