개요
Get-Member(별칭 gm)는 객체의 속성(Property)과 메서드(Method)를 조회하는 cmdlet이다. 10장에서 확인했듯 PowerShell 파이프라인은 텍스트가 아닌 객체를 주고받으므로, “이 객체에 무엇이 들어 있는지” 알아야 Where-Object·Select-Object로 무엇을 거르고 뽑을지 판단할 수 있다. Get-Member는 그 정찰 역할을 하는 첫 번째 도구이며, PowerShell을 배우는 사람이 낯선 cmdlet의 결과를 마주칠 때 가장 먼저 실행해야 할 명령이다.
정신 모델은 “모든 파이프라인 객체는 | Get-Member로 뜯어볼 수 있는 블랙박스"라는 것이다. 결과에는 메서드가 먼저, 속성이 나중에 알파벳순으로 나열되며, 각 줄의 Definition 열에 실제 .NET 타입 시그니처가 그대로 노출된다 — 이 정보만으로 그 객체가 어떤 .NET 클래스의 인스턴스인지, 어떤 값을 읽고 쓸 수 있는지 파악할 수 있다.
사용법
| |
가장 흔한 패턴은 조사하려는 명령의 결과를 그대로 파이프로 넘기는 것이다: <명령> | Get-Member.
매개변수
| 매개변수 | 설명 |
|---|---|
-Name | 조회할 멤버 이름을 좁힌다(와일드카드 미지원) |
-MemberType(별칭 -Type) | Property, Method, NoteProperty, ScriptProperty, AliasProperty 등으로 멤버 종류를 필터링한다 |
-View | Base(원본 .NET 멤버만), Adapted(PowerShell 확장 타입 시스템), Extended(Types.ps1xml나 Add-Member로 추가된 멤버), All 중 어느 계층의 멤버를 볼지 선택한다. 기본값은 Adapted, Extended |
-Static | 인스턴스가 아니라 클래스 자체에 속한 정적 멤버를 조회한다 |
-Force | psbase, psobject, pstypenames 같은 내재 멤버(intrinsic member)까지 표시한다 |
-InputObject | 컬렉션을 파이프 대신 이 매개변수로 넘기면, 개별 요소가 아니라 컬렉션 자체의 멤버를 조회한다(11장 전체에서 반복되는 파이프 vs -InputObject 차이) |
예시
| |
주의사항·함정
파이프 vs -InputObject는 결과가 다르다: 컬렉션을 파이프로 넘기면 각 요소를 하나씩 조사하지만, -InputObject로 넘기면 컬렉션 자체(예: System.Object[])를 하나의 객체로 조사한다. 배열 안 개별 요소의 구조가 궁금하다면 반드시 파이프를 써야 한다.
중복 타입은 한 번만 표시된다: 같은 타입의 객체 여러 개를 파이프로 넘기면 Get-Member는 타입별로 한 번만 결과를 보여준다 — 100개의 프로세스를 넘겨도 System.Diagnostics.Process 타입 설명은 한 번만 나온다.
속성 순서는 알파벳순이지, 추가된 순서가 아니다: Add-Member로 속성을 추가한 순서를 그대로 보고 싶다면 Get-Member 대신 $object.psobject.Properties를 직접 순회해야 한다.
이식성: CMD·Bash에는 “이 값의 구조가 무엇인지” 물어보는 대응 개념 자체가 없다 — 텍스트에는 애초에 구조가 없기 때문이다. 굳이 비교하면 동적 타입 언어의 리플렉션(Python의 dir(), JavaScript의 Object.keys())이 Get-Member와 목적이 가장 비슷하다.
![Featured image of post [PowerShell] 11. Get-Member — 객체 구조 탐색](/post/powershell/get-member-command-object-structure-powershell/wordcloud_hu_2cb9ac3a2d49fb23.webp)
![[PowerShell] 09. Format-Table/List/Wide — 출력 형식 제어](/post/powershell/format-table-list-wide-command-output/wordcloud_hu_551d06e00228d794.webp)
![[PowerShell] 10. 파이프라인 정신 모델 — 텍스트가 아닌 객체](/post/powershell/powershell-pipeline-object-model-not-text/wordcloud_hu_8f8cdb72019d8a67.webp)
![[PowerShell] 11. Get-Member — 객체 구조 탐색](/post/powershell/get-member-command-object-structure-powershell/wordcloud_hu_63da05e55c117b81.webp)
![[PowerShell] 12. Where-Object — 필터링](/post/powershell/where-object-command-filter-pipeline-powershell/wordcloud_hu_75843f29a19f2cc5.webp)
![[PowerShell] 13. Select-Object — 속성 선택과 투영](/post/powershell/select-object-command-property-projection-powershell/wordcloud_hu_edd09be1027d5ea6.webp)
![[PowerShell] 14. Sort-Object — 정렬](/post/powershell/sort-object-command-sort-pipeline-powershell/wordcloud_hu_7046e967c73dfd11.webp)
![[PowerShell] 16. Group-Object — 그룹화](/post/powershell/group-object-command-grouping-powershell/wordcloud_hu_2e19558643be3d4e.webp)
![[PowerShell] 23. 타입 캐스팅과 [type] 접근자](/post/powershell/type-casting-type-accelerator-powershell/wordcloud_hu_e3ac5e77eecdb3c5.webp)