개요
Format-Table, Format-List, Format-Wide는 PowerShell 객체를 화면에 어떤 모양으로 보여줄지 결정하는 세 가지 서식 cmdlet이다. Get-Process나 Get-Service를 실행했을 때 자동으로 표 형태로 나오는 것도 사실은 PowerShell이 내부적으로 Format-Table에 해당하는 기본 뷰를 적용한 결과다. CMD·Bash에서는 출력 형식이 명령마다 하드코딩되어 있지만, PowerShell에서는 “어떤 객체든 같은 서식 cmdlet으로 표·목록·와이드 뷰 중 원하는 모양을 고를 수 있다"는 점이 다르다.
정신 모델은 “서식 cmdlet은 데이터를 바꾸지 않고 보여주는 방식만 바꾼다"는 것이다. Format-* cmdlet이 반환하는 것은 원래 객체가 아니라 화면 표시 전용 서식 객체이므로, Format-Table을 거친 결과를 다시 Where-Object나 Sort-Object로 처리하면 예상과 다르게 동작한다 — 서식 적용은 언제나 파이프라인의 마지막 단계여야 한다.
사용법
| |
매개변수
| 매개변수 | 해당 cmdlet | 설명 |
|---|---|---|
-Property | 셋 다 | 표시할 속성(또는 계산된 속성)을 지정한다. 생략하면 객체 타입의 기본 뷰를 따른다 |
-AutoSize | Table, Wide | 데이터 너비에 맞춰 열 너비·개수를 자동 조정한다 |
-Wrap | Table | 열 너비를 넘는 텍스트를 자르지 않고 다음 줄로 넘긴다 |
-GroupBy | 셋 다 | 정렬된 입력을 지정한 속성 값별로 묶어서 별도 표로 표시한다 |
-Column | Wide | 한 줄에 표시할 열 개수를 직접 지정한다(-AutoSize와 동시 사용 불가) |
-View | 셋 다 | .format.ps1xml에 정의된 대체 뷰나 사용자 지정 뷰 이름을 지정한다 |
-Force | 셋 다 | 문자열·기본 타입처럼 공개 속성이 없는 객체도 강제로 서식을 적용한다 |
예시
| |
계산된 속성은 해시테이블로 Label(또는 Name)과 Expression을 지정해 원하는 이름의 새 열을 즉석에서 만든다 — 원본 객체에 없는 값(예: 경과 시간)도 이 방식으로 표시할 수 있다.
주의사항·함정
세 cmdlet 중 무엇을 쓸지는 속성 개수와 화면 폭으로 판단한다: 속성이 4개 이하로 적고 한 줄에 다 들어갈 때는 Format-Table, 속성이 많아 표로는 잘리는 객체는 Format-List, 이름 하나만 여러 열로 나열하고 싶을 때는 Format-Wide가 적합하다. 셋 다 맞지 않는 복잡한 레이아웃이 필요하면 Format-Custom을 검토한다.
-Property와 -View는 동시에 쓸 수 없다: 원하는 속성을 직접 지정하는 방식과, 미리 정의된 뷰 이름을 지정하는 방식은 서로 배타적이다.
기본 타입에 -Property를 쓰려면 -Force가 필요할 수 있다: [string]처럼 ToString()으로 자체 출력되는 기본 타입이나, 공개 속성이 없는 객체에 -Property를 지정하면 -Force를 함께 써야 한다.
이식성: CMD·Bash에는 이런 범용 서식 계층이 없다 — 각 명령이 자체적으로 텍스트 출력 형식을 결정하고, 형식을 바꾸려면 awk·cut처럼 텍스트를 다시 파싱해야 한다. PowerShell은 데이터(객체)와 표현(서식)을 분리해 두었기 때문에, 어떤 cmdlet의 결과든 같은 세 가지 서식 cmdlet으로 원하는 모양을 고를 수 있다.
![Featured image of post [PowerShell] 09. Format-Table/List/Wide — 출력 형식 제어](/post/powershell/format-table-list-wide-command-output/wordcloud_hu_cf3dc537b3241989.webp)
![[PowerShell] 07. PSReadLine — 탭 완성과 명령 히스토리](/post/powershell/psreadline-module-tab-completion-history/wordcloud_hu_a79d03efc2f079cc.webp)
![[PowerShell] 08. Clear-Host — 화면 지우기와 콘솔 설정](/post/powershell/clear-host-command-console-title-color/wordcloud_hu_5bf47c18c0df3890.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] 00. 과정 개요와 커리큘럼](/post/powershell/getting-started-powershell/wordcloud_hu_15979a96cd2a594f.webp)
![[PowerShell] 01. PowerShell 소개 — pwsh와 Windows PowerShell](/post/powershell/powershell-pwsh-introduction-cross-platform-shell/wordcloud_hu_a2e2aef4f86fd6a4.webp)
![[PowerShell] 02. Get-Help — 도움말 조회와 Update-Help](/post/powershell/get-help-command-powershell-help-system/wordcloud_hu_618b778795b5a246.webp)
![[PowerShell] 03. Get-Command — cmdlet 검색](/post/powershell/get-command-cmdlet-search-powershell/wordcloud_hu_b7b55a297c430656.webp)
![[PowerShell] 04. Get-Alias/Set-Alias/New-Alias — 별칭 시스템](/post/powershell/get-set-new-alias-command-powershell/wordcloud_hu_707c9d2c20ab9afd.webp)