예제가 포함된 PowerShell Hashtable Ultimate 가이드
PowerShell 해시 테이블은 컬렉션 항목 및 해당 값입니다. 항목을 키라고 합니다. 또한 해시 테이블의 각 키는 동일한 값을 갖습니다.
본질적으로 PowerShell 해시 테이블은 키/값 저장소 '테이블'입니다.
이 S 영역에서는 PowerShell 해시 테이블에 대해 알아야 할 모든 것을 알려 드리겠습니다. 첫 번째 섹션에서는 Hashtable과 Array의 차이점을 살펴봅니다.
그런 다음 두 번째 섹션에서 다음을 사용하여 회원가입 Cmdlet, 해시테이블 뒤에서 안내해 드리겠습니다.
마지막으로 스크립팅에서 해시테이블을 사용하는 다양한 방법을 살펴보겠습니다.
게시물 주제 찾아보기
- PowerShell 해시 테이블 대 PowerShell 어레이
- PowerShell 해시 테이블 메서드 및 속성
- 빈 PowerShell 해시 테이블을 만들고 키를 추가하는 방법
- 여러 값과 하나의 키를 사용하여 PowerShell 해시 테이블을 만드는 방법
- ForEach 루프를 사용하여 PowerShell 해시 테이블을 반복하는 방법
- PowerShell Hashtable 및 Select-Object를 사용하여 보고서를 사용자 지정하는 방법
- PowerShell 해시 테이블을 CSV로 내보내는 방법
- 참조 및 추가 읽을거리
PowerShell 해시 테이블 대 PowerShell 어레이
Hashtables에 대해 알아보기 전에 Hashtables와 Arrays의 차이점을 설명하고 싶습니다. 이 구별은 두 개념이 쉽게 혼동될 수 있으므로 중요합니다.
이 가이드의 도입부에서 해시테이블이 키/값 저장소라고 설명했습니다. 또한 해시 테이블은 키와 값이 있는 테이블과 같습니다.
반대로 PowerShell 배열은 값 또는 개체의 모음입니다.
PowerShell 해시 테이블과 PowerShell 배열의 주요 차이점은 해시 테이블은 항목(키)과 해당 값의 모음이고 배열은 항목 목록이라는 것입니다.
빠른 예를 위해 아래 코드는 해시 테이블 및 배열의 예입니다. 첫 번째 코드는 해시 테이블을 생성하고 두 번째 코드는 배열을 생성합니다.
|_+_| |_+_| 코드 예시에서 해시테이블은 {}로 묶인 반면 배열은 ()로 묶인 것을 볼 수 있습니다.아래 스크린샷은 두 코드의 결과를 표시합니다.
(1)이라고 표시된 스크린샷의 부분은 해시 테이블의 결과입니다. 키/값 쌍을 보셨습니까?
위의 예에서 Root 키의 값은 C:UsersvictoDocuments입니다. 또한 PSProvider 키에는 FileSystem이라는 값이 있습니다.
마지막으로 Name에는 Document 값이 있습니다.
또한 (2)로 표시된 스크린샷 부분은 배열 코드의 결과를 가지고 있습니다. 앞에서 설명한 것처럼 목록일 뿐입니다.
PowerShell 해시 테이블 메서드 및 속성
소개에서 나는 PowerShell Hashtables의 뒤에서 당신을 데려가겠다고 약속했습니다. 이거 야!
이 섹션에서는 Get-Member Cmdlet을 사용하여 해시 테이블을 살펴보는 방법을 알려 드리겠습니다.
PowerShell Hashtable의 결과를 다음으로 파이프할 때 회원가입 , 사용 가능한 행동 양식 그리고 속성 해시 테이블의.
위의 첫 번째 빠른 예제로 돌아가 보겠습니다.
|_+_|코드를 새 PowerShell ISE 문서에 복사합니다. 그런 다음 코드를 실행합니다.
그런 다음 사용 가능한 것을 보려면 행동 양식 그리고 속성 이 해시 테이블에서 동일한 PowerShell ISE에서 이 명령을 실행합니다.
|_+_|위의 명령을 실행하려면 마지막 코드 아래에 붙여넣습니다. 그런 다음 강조 표시하고 F8 키를 누르거나 강조 표시된 아이콘을 클릭합니다.
명령은 PowerShell 콘솔 창에 결과를 표시합니다.
지금은 결과를 살펴보십시오. TypeName: System.Collections.Hashtable이 있습니다.
이것은 Get-Member Cmdlet으로 파이프된 개체가 해시 테이블임을 확인합니다!
이 섹션의 다음 하위 섹션에서는 PowerShell 해시 테이블의 일반적인 메서드와 속성을 사용하는 방법을 보여 드리겠습니다.
기존 해시 테이블에 항목을 추가하거나 제거하는 방법
이 섹션에서는 기존 PowerShell 해시 테이블에 새 항목을 추가하는 방법을 배웁니다. 또한 기존 PowerShell 해시 테이블에서 항목을 제거하는 방법도 배우게 됩니다.
자세히 알아보기 전에 빈 해시 테이블을 만들 수도 있다는 점을 말씀드리고 싶습니다. 그런 다음 해시 테이블에 키/값을 추가합니다. 이에 대해서는 나중에 자세히 설명합니다.
Firestick의 리모컨 분실
기존 PowerShell hastables에 항목 추가 또는 제거로 돌아가기 – 실행 시 $해시테이블 | 회원가입 명령, 결과에 표시되는 방법 중 하나는 추가하다 . 방법도 있고, 제거하다 .
아래 스크린샷의 강조 표시된 부분을 참조하세요.
이 두 가지 방법을 사용하는 방법을 보여드리기 전에 원본 PowerShell 해시 테이블 코드를 살펴보겠습니다.
|_+_|해시 테이블에는 3개의 항목이 있습니다. 이 예에서는 값이 Maps인 Description이라는 다른 키를 내 '내 문서' 폴더에 추가합니다.
이 작업을 완료하기 위해 아래 명령을 실행합니다(이전 명령을 실행한 동일한 PowerShell ISE 콘솔에서).
|_+_| 내가 어떻게 Add를 사용했는지 주목하십시오 방법 . 해시 테이블을 보유하는 변수 옆에 마침표(.)를 추가합니다. 그런 다음 방법을 포함 시켰습니다. 추가하다 , 다음에 (). 마지막으로 해시 테이블에 추가하려는 새 키/값 쌍을 포함했습니다.명령을 실행한 후 추가 키가 추가되었는지 확인하려면 강조 표시하십시오. $hashtable 그리고 F8을 누르세요.
|_+_|다음은 새 키/값이 추가되었음을 확인하는 결과의 스크린샷입니다.
계속해서 동일한 접근 방식을 사용하여 PowerShell 해시 테이블에서 값을 제거할 수 있습니다.
해시 테이블에 추가한 마지막 키를 제거하려면 마지막 명령과 유사한 명령을 실행합니다. 이번에는 교체하지만 추가하다 방법 제거하다 방법.
다음은 명령입니다.
|_+_| 그만큼 제거하다 방법은 다음을 포함합니다. 열쇠 . 키를 포함할 필요가 없습니다. 값 명령에서.먼저 위의 명령어를 실행합니다. 그런 다음 키가 제거되었는지 확인하려면 $hashtable 그리고 F8을 누르세요.
|_+_|명령 결과는 키가 제거되었음을 확인합니다!
PowerShell 해시 테이블에 키가 포함되어 있는지 확인하는 방법
우리가 아래의 hastable을 파이프로 연결했을 때 회원가입 Cmdlet, 표시되는 방법 중 하나는 포함키 방법 – 아래 스크린샷을 참조하십시오.
|_+_|
그만큼 포함키 방법은 매우 다양하게 사용될 수 있습니다. 그러나 이 방법의 일반적인 응용 프로그램 중 하나는 이를 사용하여 해시 테이블에 키가 있는지 확인하고 없으면 키를 추가하는 것입니다.
의 또 다른 응용 포함키 PowerShell 해시테이블의 방법은 단순히 키 이름이 해시테이블에 존재하는지 확인하는 데 사용하는 것입니다.
키를 사용하여 PowerShell 해시 테이블에 키가 있는지 확인하려면 포함키 방법, 아래 명령을 실행하십시오.
|_+_|$hashtable 변수에 저장된 해시테이블에 Description이라는 이름의 키가 존재하는지 확인하는 명령어이다. 명령 결과에 False가 표시됩니다.
PowerShell 해시 테이블에 추가하기 전에 설명 키가 있는지 확인하려면 이전 명령에 대한 추가 코드 줄이 필요합니다.
다음은 개선된 코드입니다.
|_+_|코드는 IF 조건문을 사용하여 이름이 Description인 키가 해시 테이블에 존재하는지 확인합니다.
그런 다음 결과가 False이면 IF 문의 명령 실행 부분에서 추가하다 해시 테이블에 키를 추가하는 PowerShell 해시 테이블의 메서드입니다.
그러나 키가 해시 테이블에 있는 경우 IF 문의 Else 부분에서 명령을 실행한 사람에게 키가 이미 있음을 알리는 메시지를 표시합니다.
마지막 명령을 실행한 후 강조 표시 $hashtable 변수를 만들고 단독으로 실행하십시오. 결과는 키 설명이 존재하지 않기 때문에 변수에 추가되었음을 확인합니다.
이 스크립트가 작동하는지 테스트하려면 다시 실행하십시오...
|_+_|이번에는 스크립트가 키를 추가하지 않았습니다. 오히려 IF 문의 Else 부분에 있는 정보를 반환했습니다. 키가 이미 해시 테이블에 있습니다. .
PowerShell 해시 테이블을 문자열로 변환하는 방법
PowerShell 해시 테이블을 문자열로 변환하는 첫 번째 단계는 해시 테이블의 키 값을 반환하는 것입니다. 즉, PowerShell 해시 테이블을 PowerShell 배열로 변환합니다.
해시 테이블의 값을 반환하려면 가치 해시 테이블의 속성.
다음은 해시 테이블의 값을 반환하는 명령입니다.
|_+_|PowerShell 해시 테이블에서 값을 반환했으면 다음 단계는 $hashtable.Values를 다음으로 파이프하는 것입니다. 문자열 외 명령…
|_+_| 이 가이드의 뒷부분에서 PowerShell 해시 테이블을 문자열로 변환하는 것의 중요성을 알게 될 것입니다. 실제 SysAdmin 스크립팅에서 이에 대한 실제 적용을 보려면 계속 읽으십시오.PowerShell 해시 테이블을 사용하는 방법 GetEnumerator 방법
PowerShell 해시 테이블의 또 다른 중요한 방법은 GetEnumerator 방법.
이 메서드를 사용하여 해시 테이블의 키를 개별 문자열로 분리할 수 있습니다. 다음은 샘플 명령입니다. GetEnumerator 해시 테이블의 방법:
|_+_|위 명령의 결과에서 알 수 있듯이 키와 값은 개별 헤더에 반환됩니다. 지금은 응용 프로그램이 생각나지 않지만 PowerShell 해시 테이블에서 키를 분리해야 하는 경우 어떻게 하는지 알 수 있습니다!
PowerShell 해시 테이블 항목을 계산하는 방법
또 다른 유용한 해시 테이블 속성이 있습니다. 세다 . 이름에서 알 수 있듯이 이 속성은 해시 테이블의 키 수를 반환합니다.
좋아요 가치 속성에서 Count 속성을 호출하려면 다음과 유사한 명령을 사용합니다.
|_+_|이 명령은 해시 테이블인 $hashtable에 4개의 키가 있음을 확인합니다.
빈 PowerShell 해시 테이블을 만들고 키를 추가하는 방법
지금까지 이 S 영역의 모든 예제는 기존 키로 PowerShell 해시 테이블을 조작하는 데 중점을 두었습니다. 이 섹션에서는 빈 해시 테이블을 만드는 방법을 배웁니다.
그런 다음 해시 테이블에 키를 추가합니다.
빈 PowerShell 해시 테이블을 만들려면 간단히 @ 기호, 뒤따르는 {} 괄호. 다음은 변수에 저장된 빈 해시 테이블의 예입니다. 빈 해시 테이블 :
임대 스마트 TV|_+_|
해시 테이블이 값 없이 생성되었는지 확인하려면 이전 명령을 실행합니다. 그런 다음 변수를 자체적으로 실행합니다.
|_+_|다음 단계는 추가하다 이 가이드의 앞부분에서 다룬 메서드를 사용하여 해시 테이블에 키/값을 추가합니다. 이 예에서는 이름 , 값 문서 .
다음은 이 작업을 수행하는 명령입니다.
|_+_|마지막으로 값이 성공적으로 추가되었는지 확인하려면 $Emptyhashtable 변수를 실행합니다.
|_+_|마지막 명령은 값이 성공적으로 추가되었는지 확인합니다.
여러 값과 하나의 키를 사용하여 PowerShell 해시 테이블을 만드는 방법
지금까지 다룬 모든 예에서 PowerShell 해시 테이블에는 하나의 키/값 쌍이 있습니다. 그러나 여러 값이 있는 해시 테이블에 단일 키가 필요할 수 있는 상황이 있습니다.
이 경우 배열을 값으로 사용하여 해시 테이블을 효과적으로 만들고 싶습니다.
시작하려면 해시 테이블을 배열과 구별하는 데 사용한 코드를 보여 주는 것이 좋습니다.
|_+_| |_+_|따라서 단일 키와 여러 값으로 PowerShell 해시 테이블을 만들려면 다음과 유사한 스크립트를 실행하십시오.
|_+_|위의 스크립트에서, 로그 이름 시스템, 응용 프로그램 및 보안 값이 키에 할당되는 동안 해시 테이블 키입니다. 효과적으로, 우리는 여러 값을 가진 하나의 hastable 키를 만들었습니다.
개별 값을 나열하려면 로그 이름 키, 아래 명령을 실행합니다.
|_+_|아래 스크린샷에서 (1)이라고 표시된 부분은 해시 테이블의 결과이며, $hashtableWithArrays . 또한 (2)로 표시된 부분은 결과를 보여줍니다. $hashtableWithArrays.Values 명령.
Windows 이벤트 로그(시스템, 응용 프로그램 및 보안)에 익숙하다면 Windows 이벤트 로그의 이름입니다.
다음 섹션에서는 PowerShell ForEach 루프를 사용하여 위의 해시 테이블을 반복하고 실행하는 방법을 보여 드리겠습니다. Get-EventLog 단일 PowerShell 스크립트를 사용하여 이 3개의 이벤트 로그에 대한 명령.
ForEach 루프를 사용하여 PowerShell 해시 테이블을 반복하는 방법
마지막 섹션에서는 여러 값이 있는 단일 키 PowerShell 해시 테이블을 만들었습니다.
이 섹션의 예에서는 해시 테이블을 저장한 변수를 다음과 같이 변경했습니다. 로그 이름 키 . 다음은 업데이트된 스크립트입니다.
Steam에서 DLC를 다시 다운로드하는 방법|_+_|
이 섹션에서는 사용 방법을 알려 드리겠습니다. 각각 에 저장된 값을 반복하기 위해 로그 이름 키를 누르고 실행 Get-EventLog 명령.
PowerShell ForEach에 대한 빠른 복습 과정을 위해 다음은 PowerShell ForEach 명령의 일반 구문입니다.
|_+_|위의 구문을 우리의 로그 이름 hashtable에서 업데이트된 명령은 다음과 같습니다.
#으로 시작하는 줄은 PowerShell 주석입니다. |_+_|스크립트의 첫 번째 부분은 여러 값으로 단일 키 PowerShell 해시 테이블을 만드는 동일한 스크립트입니다. 스크립트는 다음과 같습니다.
|_+_|스크립트의 두 번째 부분에서는 ($LogNameKeys.Values)에 저장된 값을 문자열로 변환하고 결과를 다른 변수에 저장했습니다. LogNameKeysAsStrings .
|_+_|마지막으로 스크립트의 세 번째 부분인 ForEach 루프가 도입되었습니다.
|_+_|스크립트의 이 부분에서 PowerShell에 저장된 각 값을 가져오도록 지시합니다. 로그 이름 열쇠 ( $LogNameKeysAsStrings ) – 개별 값을 변수에 임시로 저장 로그 이름 키 – 그런 다음 시간 변수를 사용하여 Get-EventLog 명령.
나는 포함했다 최신 매개변수 Get-EventLog 명령이 각 이벤트 로그의 마지막 5개 항목을 반환하도록 값을 5로 지정합니다. PowerShell 스크립트를 보면 복잡해 보일 수 있습니다. 그러나 자세히 보면 일반적으로 매우 쉽습니다.이제 아래 스크립트를 새 PowerShell ISE 문서에 복사하고 실행합니다.
PowerShell ISE를 관리자로 엽니다. PowerShell ISE를 관리자로 열지 않으면 액세스 오류 메시지가 표시됩니다. |_+_|아래 스크린샷은 스크립트 결과를 보여줍니다. 결과 창에는 5개의 시스템, 응용 프로그램, 보안 이벤트 로그를 나타내는 15개의 행이 있습니다.
PowerShell Hashtable 및 Select-Object를 사용하여 보고서를 사용자 지정하는 방법
마지막 섹션에서는 Windows 이벤트 로그 보고서를 가져오는 PowerShell 스크립트를 만들었습니다. 다음은 보고서의 스크린샷입니다.
스크립트의 기본 출력에는 5개의 열이 있습니다. 색인 , 시간 , 항목 유형 , 원천 , 인스턴스 ID , 그리고 메세지 . 이것을 보고서로 보내는 경우 이러한 열 이름을 쉽게 이해할 수 있는 이름으로 변경할 수 있습니다.
다음은 마지막 섹션의 스크립트입니다.
스크립트가 약간 수정되었습니다. 이제 변수가 생겼습니다. 이벤트 로그 보고서 ForEach 루프의 출력을 저장합니다. 이것이 왜 필요한지는 나중에 설명하겠습니다. |_+_|이 스크립트에서 열 헤더 이름을 수정하기 위해 파이프 Get-EventLog 명령 개체 선택 명령.
그런 다음 내에서 PowerShell 해시 테이블을 만듭니다. 개체 선택 열 이름을 수정하는 명령입니다. 다음은 마법을 수행하는 수정된 스크립트입니다.
|_+_|스크립트는 실제보다 훨씬 더 복잡해 보입니다. 그러나 Select-Object 이후의 스크립트 부분에 집중하면 이 스크립트와 이전 사본의 차이점을 쉽게 찾을 수 있습니다.
특히, 나는 해시 테이블을 개체 선택 코드 블록. 각 해시 테이블은 Get-EventLog 명령.
다음은 샘플 해시 테이블입니다. 개체 선택 블록:
|_+_|평소와 같이 PowerShell 해시 테이블에는 두 가지 요소가 있습니다. 핵심은 이름 , 값은 표현 .
주목해야 할 또 다른 중요한 점은 각 해시 테이블의 끝에 개체 선택 블록에는 쉼표(,)가 있습니다.
마지막으로 PowerShell의 최종 스크립트 결과는 다음과 같습니다.
앞서 소개한 이유를 설명하기로 약속했습니다. $EventLogReport ForEach 루프의 출력을 저장하는 변수입니다. 이 변수가 없으면 최종 결과는 3개의 이벤트 로그 각각에 대해 3개의 개별 결과를 표시합니다. 그러나 전체 결과를 변수에 저장함으로써 이 변수를 Format-Table에 연결할 수 있었습니다. 이렇게 하면 전체 결과가 단일 테이블로 표시됩니다. 다음은 마법을 수행한 명령입니다. |_+_|PowerShell 해시 테이블을 CSV로 내보내는 방법
이 마지막 섹션에서는 PowerShell 해시 테이블을 CSV로 내보내는 방법을 배웁니다.
이 섹션의 첫 번째 예에서는 이 해시 테이블을 CSV로 내보내는 방법을 보여 드리겠습니다.
|_+_|이 PowerShell 해시 테이블을 CSV 파일로 성공적으로 내보내려면 다음을 사용해야 합니다. GetEnumerator 값을 나열하는 방법(앞서 설명). 그렇지 않으면 실제 키/값 쌍이 내보내지지 않습니다.
다음은 파일에 저장된 해시 테이블을 내보내는 수정된 스크립트입니다. 해시 테이블 CSV 파일에 변수.
|_+_|아래 스크립트를 소개했습니다.
|_+_|스크립트에는 다음이 포함됩니다. GetEnumerator 방법 해시 테이블에서. 그런 다음 출력을 다음으로 파이프합니다. 개체 선택 명령.
마지막으로 출력을 파이프합니다. 개체 선택 명령 내보내기-Csv 명령. 사용 방법에 대해 자세히 알아보려면 내보내기-Csv Cmdlet, Powershell NoTypeInformation: 애플리케이션 및 예제 가이드를 읽어보세요.
이 스크립트를 실행하면 다음과 같은 CSV 파일이 생성됩니다. 해시테이블.csv , 지정한 경로에 있습니다. CSV 파일의 출력은 아래 스크린샷을 참조하십시오.
|_+_|
두 번째 예에서는 마지막 섹션에서 만든 스크립트의 출력(이벤트 로그 스크립트)을 CSV 파일로 내보냅니다.
여기 스크립트가 있습니다. 보고서를 CSV로 내보내려면 이 스크립트의 끝에 이 코드 아래에 코드를 추가했습니다.
|_+_| |_+_|코드는 출력을 파이프합니다. 각각 루프 -에 저장 이벤트 로그 보고서 변수 – 에 내보내기-Csv 명령 . 생성된 CSV 파일은 아래 스크린샷과 같습니다.
그것이 바로 PowerShell 해시 테이블에 대한 포괄적인 가이드입니다! 도움이 되셨나요?
도움이 되셨다면 투표 부탁드립니다 네 이 게시물이 도움이 되었습니까?
또는 이 페이지 끝에 있는 답장 남기기 양식을 사용하여 질문하거나 의견을 남기거나 더 많은 피드백을 제공할 수 있습니다.
마지막으로 더 많은 PowerShell 기술 S 영역을 보려면 Windows PowerShell 방법 가이드 페이지를 방문하십시오. Work from Home 페이지가 매우 유용할 수도 있습니다.


