PowerShell Format-Table: 출력을 열로 정리하기

PowerShell은 개발자의 도움을 상당히 제공하지만, 당신의 마음을 읽을 수는 없습니다. 그것은 기본 형식을 통해 최선의 추측을 제공할 수 있지만, 출력의 종류를 내재적으로 알지 못합니다. PowerShell Format-Table cmdlet을 사용하여 출력을 원하는 대로 조정할 수 있습니다.

PowerShell에는 기본 출력과 객체 유형에 따라 출력 형식을 변경할 수 있는 서식 지정 시스템이 있습니다. XML 및 항상 특정한 방식으로 출력을 서식 지정하는 방법에 대해 배우고 싶지 않다면, Powershell format-table, Format-List, 및 Format-Wide와 같은 cmdlet을 사용할 수도 있습니다. 파일 시스템의 PS1XML 파일이나 서식 cmdlet 중 하나를 사용하면 출력이 여러 가지 방식으로 표시됩니다.

특별한 형식을 사용하지 않고, 기본적으로 PowerShell은 자체 형식을 사용합니다. 특정 개체가 반환되면 해당 개체 내용의 제한된 부분만 볼 수 있습니다. 예를 들어, 하나의 폴더만 살펴보면 부모 디렉토리와 몇 가지 속성만 볼 수 있습니다.

PS> Get-Item -Path C:\Windows\

Directory: C:\
Mode	LastWriteTime		Length	Name
---- 	------------- 		------	----

d-----	11/24/2017 9:57 AM 			Windows

하지만 동일한 명령을 Select-Object -Property *로 파이프하면 어떻게 되는지 확인해보세요.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property *

PSPath 				: Microsoft.PowerShell.Core\FileSystem::C:\Windows\
PSParentPath 		: Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName 		: Windows
PSDrive				: C
PSProvider 			: Microsoft.PowerShell.Core\FileSystem
PSIsContainer 		: True
Mode 				: d-----
BaseName 			: Windows
Target 				: {C:\Windows}
LinkType 			:
Name 				: Windows
FullName 			: C:\Windows\
Parent 				:
Exists 				: True
Root 				: C:\
Extension 			:
CreationTime 		: 3/18/2017 5:40:20 AM
CreationTimeUtc 	: 3/18/2017 11:40:20 AM
LastAccessTime 		: 11/24/2017 9:57:51 AM
LastAccessTimeUtc	: 11/24/2017 3:57:51 PM
LastWriteTime 		: 11/24/2017 9:57:51 AM
LastWriteTimeUtc 	: 11/24/2017 3:57:51 PM
Attributes 			: Directory

PowerShell은 일반적으로 이 정보를 모두 볼 필요가 없기 때문에 객체의 많은 속성을 숨겼습니다. PowerShell은 기본 뷰를 제공하지만, 이것이 유일한 옵션이라는 뜻은 아닙니다. 우리는 Format cmdlet을 통해 이 뷰를 변경할 수 있습니다.

가장 인기 있는 포맷팅 cmdlet은 Format-Table입니다. PowerShell 도움말에 따르면:

Format-Table cmdlet은 객체의 선택한 속성을 각 열에 포함하여 명령의 출력을 테이블 형식으로 포맷합니다. 객체 유형은 각 열에 표시되는 기본 레이아웃 및 속성을 결정하지만, Property 매개변수를 사용하여 표시하려는 속성을 선택할 수 있습니다.

해시 테이블을 사용하여 객체를 표시하기 전에 계산된 속성을 추가하고 테이블의 열 제목을 지정할 수도 있습니다. 계산된 속성을 추가하려면 Property 또는 GroupBy 매개변수를 사용하세요.

Powershell Format-Table과 Select-Object를 사용하여 개별 객체 속성을 선택하는 것은 현재 콘솔의 너비를 벗어나지 않는 한 동일해 보입니다. 그러나 많은 개체를 표시하려고 시도하면, Format-Table은 테이블 형식을 유지하고, Select-Object는 각 줄에 속성을 표시하도록 되돌립니다.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime 	: 11/24/2017 9:57:51 AM
Name 			: Windows
LastWriteTime 	: 11/24/2017 9:57:51 AM
PSProvider 		: Microsoft.PowerShell.Core\FileSystem
CreationTime 	: 3/18/2017 5:40:20 AM

PS> Get-Item -Path C:\Windows\ | Format-Table -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime			Name	LastWriteTime			PSProvider	CreationTime
-------------- 			---- 	------------- 			---------- 	------------
11/24/2017 9:57:51 AM 	Windows 11/24/2017 9:57:51 AM	Microsoft.PowerShell.Core\FileSystem	3/18/2017 5:40:20 AM

Powershell Format-Table 출력은 항상 테이블 형식으로 정보를 표시하려고 시도합니다. 속성 값이 표시되기에 너무 길 경우, 누락된 텍스트를 생략 부호로 대체하여 더 많은 정보가 사용 가능하지만 표시되지 않음을 나타냅니다.

Format-Table cmdlet은 출력을 조작하는 다양한 방법을 가지고 있습니다. Microsoft 문서에서 Format-Table의 전체 문서를 확인해보세요.

Source:
https://adamtheautomator.com/powershell-format-table/