해시 테이블에 처음으로 접하는 경우, 이것이 무엇이며 스크립트나 명령에 어떤 역할을 하는지 궁금할 수 있습니다. 걱정하지 마세요! 이 튜토리얼에서는 PowerShell 해시 테이블을 사용하는 시작 방법을 알려드립니다.
간단히 말해, 해시 테이블은 키-값 쌍을 사용하여 데이터를 저장하고 조작할 수 있게 해주며, 이를 빠르고 효율적으로 액세스할 수 있습니다. 이 튜토리얼에서는 해시 테이블의 기본 개념과 PowerShell 스크립트 및 명령에 사용하는 방법을 배우게 될 것입니다.
계속 읽어보고 PowerShell 해시 테이블로 기술 스킬을 확장해보세요!
전제 조건
이 튜토리얼은 실습 중심의 설명입니다. 따라하려면 PowerShell v5+가 설치되어 있고 구성된 시스템이 필요합니다. 이 튜토리얼은 PowerShell 7을 사용하는 Windows 10을 기준으로 작성되었지만, 다른 버전의 PowerShell과 Windows도 작동할 것입니다.
PowerShell 해시 테이블 만들기
특정 데이터를 검색하는 것은 어느 순간에는 “바늘을 건초더미에서 찾는” 상황이 될 수 있습니다. 하지만 해시 테이블을 사용하면 광범위한 데이터 컬렉션에서 특정 항목을 빠르게 검색할 수 있습니다.
PowerShell에서 해시 테이블은 구성 데이터 저장, cmdlet에 인수 전달, 스크립트에서 데이터 저장 등 다양한 방식으로 사용되는 유연한 데이터 구조입니다.
PowerShell 해시 테이블이 어떻게 작동하는지 보려면, 먼저 다음과 같이 하나를 만들어야 합니다:
1. PowerShell 세션을 열고 다음 명령을 실행하십시오. 이 명령은 출력을 생성하지 않지만 name
이라는 변수를 선언하여 빈 해시테이블을 참조합니다.
아래에서 볼 수 있듯이 PowerShell의 배열과 유사하게 해시테이블은 @
기호를 사용하여 정의됩니다.
2. 다음 명령을 실행하여 name
변수의 유형(GetType()
)을 확인하십시오.
아래와 같이 name
변수의 유형은 Hashtable입니다. 이 정보는 해시테이블이 성공적으로 생성되었음을 확인합니다.

3. 해시테이블을 확인한 후, 다음 코드를 실행하여 해시테이블이 비어 있는지 여부를 확인하십시오.
아래 코드는 Count
속성이 (-eq
) 0
과 동일한지 여부를 확인하고 해당하는 메시지를 출력합니다.
아래에서 보듯이 해시테이블은 아직 비어 있으며 키-값 쌍이 정의되어 있지 않습니다.

PowerShell 해시테이블에 항목 추가하기
비어 있는 PowerShell 해시테이블을 만들었으며, 항목을 추가하지 않으면 실제로 유용하지 않습니다. 어떻게 추가할까요? 해시테이블에 키-값 쌍을 추가함으로써 가능합니다.
배열과 유사하지만, PowerShell 해시테이블은 정수 대신 키(어떤 데이터 유형도 가능)를 사용하여 값을 식별합니다. 이 기능은 키가 해당 값에 빠르게 접근, 검색 및 삭제할 수 있도록 합니다.
아래는 PowerShell 해시테이블에 키-값 쌍을 추가하는 구문입니다. 여기서:
$hashtable
– 해시테이블의 이름.$key
– 키의 이름으로, 대소문자를 구분하지 않습니다. 예를 들어 “FirstName”과 “firstname”은 해시테이블에서 동일한 키로 간주됩니다.$value
– 키와 연결할 값입니다.
다음 코드를 실행하면 콘솔에 출력되지 않지만, 키-값 쌍을 선언하고 해시테이블($name
)에 추가합니다.
해시테이블에서 키를 사용하면 키를 해싱 함수를 수행하여 해시테이블의 내부 데이터 구조에서 특정 위치에 매핑합니다.
? 해시테이블의 값은 숫자, 문자열, 배열, 객체 및 기타 데이터 유형과 같은 모든 유형이 될 수 있습니다.
이제 아래 코드를 다시 실행하여 해시테이블이 비어있지 않은지 확인하십시오.
아래와 같이, 이번에는 해시테이블이 비어있지 않다는 메시지를 받게 될 것입니다.

PowerShell 해시테이블에서 항목 검색
해시테이블이 비어있지 않다고 확신한다고 가정해 보겠습니다. 해시테이블에 어떤 항목이 있는지 어떻게 알 수 있을까요? 다행히도, 해시테이블에서 항목을 검색하여 가져올 수 있습니다.
아래 코드를 실행하여 해시테이블의 모든 항목을 키-값 쌍으로 한 줄씩 가져와 출력(Write-Output
)합니다.`

이제 아래 코드를 실행하여 해시테이블의 모든 항목을 가져와 콘솔에 출력합니다.
? 이 튜토리얼을 통해 자주 사용할 다음 코드를 알아두세요. 함수를 생성하여 동일한 코드를 여러 번 복사하여 붙여넣기 할 필요가 없지만, 이 튜토리얼의 범위를 벗어납니다.
이번에는 항목 중 어떤 것이 키이고 값인지를 나타내는 표시를 볼 수 있습니다.

사전 정의된 값을 사용하여 해시테이블 생성
지금까지 빈 해시테이블을 생성하는 것만 살펴봤습니다. 하지만 특정 값이 항상 해시테이블에 필요한 경우, 사전 정의된 값을 가지고 하나를 생성할 수 있습니다.
사전 정의된 값을 가진 해시테이블은 시간을 절약하고 코드를 효율적으로 만들어줍니다. 나중에 값을 해시테이블에 추가할 필요가 없기 때문입니다.
? 해시테이블 생성 시 출력이 생성되지 않는다는 점에 유의하세요. 걱정하지 마세요. 이 튜토리얼에서는 각 해시테이블의 생성 후 확인할 것입니다.
1. 아래 명령을 실행하여 세 개의 키-값 쌍을 가진 해시테이블($hashtable1
)을 생성합니다.
2. 다음 코드를 실행하여 새로운 해시테이블(hashtable1
)이 존재하는지 확인합니다.
각 키-값 쌍의 값이 예상대로 화면에 출력되는 것을 확인할 수 있습니다. 이 출력은 미리 정의된 값들이 해시테이블의 적절한 위치에 저장되어 있는 것을 확인합니다.

3. 이제 아래 코드를 실행하여 루프(또는 배열)를 사용하여 미리 정의된 값으로 해시테이블($hashtable2
)을 생성하세요.
4. 마지막으로 아래 코드를 실행하여 새로운 해시테이블(hashtable2
)이 성공적으로 생성되었는지 확인하세요.
아래 출력은 루프 방법을 사용하여 미리 정의된 값으로 해시테이블을 생성할 때 작동하는 것을 확인합니다. 그러나 항목들이 무작위로 나열되기 때문에 수정 방법에 대해서는 다음 섹션으로 이동하십시오.

해시테이블에서 항목의 순서가 지정된 목록 생성
기본적으로 해시테이블의 항목은 특정한 순서로 저장되지 않습니다. 그러나 순서가 지정된 목록이 필요한 경우 어떻게 해야 할까요? 데이터를 특정한 순서로 정렬하기 위해 해시테이블에서 항목의 순서가 지정된 목록을 생성할 수도 있습니다.
해시테이블에서 항목의 순서가 지정된 목록을 생성하려면 다음과 같이 [ordered]
속성을 사용하세요:
1. 다음 코드를 실행하여 해시 테이블($hashtable3
)의 항목들로 구성된 [ordered]
목록을 생성하세요.
2. 그 다음, 아래 코드를 실행하여 정렬된 해시 테이블 목록이 성공적으로 생성되었는지 확인하세요.
아래와 같이, 목록에 나열된 항목들은 해시 테이블을 생성할 때 정의한 순서대로 유지됩니다.
정렬된 해시 테이블을 사용하는 장점은 다음과 같습니다(제한 없음).
Benefits | Description |
Easier to read and debug | The elements are displayed in a predictable order, which can be especially useful if you work with many elements of a large hashtable. |
Improved performance | An ordered hashtable can be more efficient when accessing elements frequently in a specific order. |

3. 마지막으로, 정렬된 해시 테이블($hashtable3
)을 호출하여 여전히 정렬된 항목 목록을 얻을 수 있는지 확인하세요.
아래 출력은 해시 테이블에 접근하는 방법에 관계없이 여전히 정렬된 항목 목록을 얻을 수 있다는 것을 확인합니다.

해시 테이블에서 기존 항목 업데이트
데이터는 계속해서 변경되고, 기존의 해시 테이블을 업데이트하는 것은 중요한 작업입니다. 예를 들어, 구성 값을 저장하기 위해 해시 테이블을 사용하고 있다면, 구성이 변경되었을 때 키의 값을 업데이트해야 할 수도 있습니다.
PowerShell 해시 테이블을 업데이트하기 위해서는 =
할당 연산자를 사용하면 됩니다. 다음과 같이 실행하세요:
1. 아래 명령을 실행하세요. 출력은 제공되지 않지만, $hashtable3
의 Key2
키의 값을 NewValue2
로 업데이트합니다.
다음으로 아래 명령을 실행하여 해시 테이블($hashtable3
)에 새로운 키-값 쌍(Key4 = NewValue4
)을 추가하세요.
새로운 키-값 쌍을 추가하면 기존 해시 테이블의 리스트를 업데이트하는 것과 같이 출력이 나타나지 않지만, 다음 단계에서 변경 사항을 확인할 수 있습니다.
3. 다음 코드를 실행하여 해시 테이블($hashtable3
)의 키 값이 업데이트되었는지 확인하세요.

? PowerShell에서 해시 테이블의 각 키는 고유해야 합니다. 이미 해시 테이블에 있는 키-값 쌍을 추가하려고 하면 아래와 같은 오류가 발생합니다. 이 오류를 피하려면 다음 단계로 넘어가세요.

4. 이제 다음 코드를 실행하세요. 이 코드는 키-값 쌍을 추가하기 전에 해당 키가 이미 해시 테이블에 있는지 확인하기 위해 Contains()
메서드를 사용합니다.
만약 새로운 키가 존재하지 않는다면, 아래와 같은 메시지가 나타날 것입니다. “새로운 키가 해시 테이블에 추가되었습니다.”

그렇지 않으면 아래에 표시된대로, 이미 있는 키를 사용하려고 하면 메시지가 나타납니다.

5. 마지막으로 아래 코드를 다시 실행하여 해시 테이블 ($hashtable3
)의 모든 항목을 검색하십시오.
아래에서는 새로 추가된 키 (Key5) 및 지금까지 해시 테이블에 추가한 다른 항목을 볼 수 있습니다.

해시 테이블에서 항목 제거하기
특히 불필요한 항목이 포함된 해시 테이블은 혼동을 가져올 수 있습니다. 더 이상 관련이 없거나 필요하지 않은 항목을 해시 테이블에서 제거하는 것이 좋습니다.
해시 테이블에 사용자 및 사용자 정보 목록이 포함되어 있다고 가정해 보겠습니다. 그렇다면 더 이상 활성화되지 않은 사용자는 해시 테이블에서 제거하십시오.
아래 코드를 실행하여 해시 테이블 ($hashtable3
)에서 특정 항목 (Key1
)을 제거하십시오.
아래에서 출력은 키가 제거되었다는 메시지를 인쇄합니다. 그러나 키가 존재하지 않는 경우 키를 찾을 수 없다는 메시지가 표시됩니다.

이제 아래 코드를 실행하여 해시 테이블의 모든 항목을 확인하고 항목 삭제가 성공했는지 확인하십시오.
아래에서는 키 ‘Key5’와 관련된 키-값 쌍이 해시테이블에 더 이상 존재하지 않음을 확인할 수 있습니다.

결론
키-값 쌍 구조와 빠른 액세스를 특징으로 하는 PowerShell 해시테이블은 다양한 시나리오에서 대량의 데이터를 관리하기에 적합합니다. 이 튜토리얼에서는 해시테이블을 생성하고, 항목을 추가하고, 업데이트하고, 제거하는 방법을 배웠습니다. 이 모든 것들은 스크립트에서 해시테이블을 효과적으로 사용하는 데 필요한 기술을 제공합니다.
지금 새롭게 습득한 기술을 한 단계 더 발전시켜 보는 건 어떨까요? 해시테이블을 데이터 조작 및 변환과 같은 고급 작업에 스크립트에 통합해 보세요. 또는 해시테이블을 배열과 객체와 같은 다른 데이터 구조와 결합하여 더 복잡한 문제를 해결하는 실험을 해보세요.