Windows PowerShell에는 특정 개체에 대해 표시할 속성을 제어할 수 있는 일련의 cmdlet이 있습니다. 이러한 cmdlet의 이름은 모두 동사 Format으로 시작되며, 표시할 속성을 하나 이상 선택하는 데 사용할 수 있습니다.

Format cmdlet으로는 Format-Wide, Format-List, Format-TableFormat-Custom이 있습니다. 이 사용 설명서에서는 Format-Wide, Format-ListFormat-Table cmdlet에 대해서만 설명합니다.

각 형식 cmdlet에는 표시할 특정 속성을 지정하지 않을 경우 사용될 기본 속성이 있습니다. 각 cmdlet은 또한 동일한 매개 변수 이름인 Property를 사용하여 표시할 속성을 지정합니다. Format-Wide는 하나의 속성만 표시하기 때문에 해당 Property 속성에는 하나의 값만 있지만 Format-ListFormat-Table의 속성 매개 변수는 여러 개의 속성 이름을 받아들입니다.

실행 중인 두 개의 Windows PowerShell 인스턴스에 Get-Process -Name powershell 명령을 사용하면 다음과 같은 내용이 출력됩니다.

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    995       9    30308      27996   152     2.73   2760 powershell
    331       9    23284      29084   143     1.06   3448 powershell

이 단원의 나머지 부분에서는 Format cmdlet을 사용하여 이 명령 출력의 표시 방법을 변경하는 방법을 설명합니다.

Format-Wide를 사용하여 단일 항목 출력

기본적으로 Format-Wide cmdlet은 개체의 기본 속성만 표시합니다. 다음과 같이 각 개체와 연결된 정보는 하나의 열에 표시됩니다.

PS> Get-Process -Name powershell | Format-Wide

powershell                              powershell

다음과 같이 기본 속성이 아닌 속성을 지정할 수도 있습니다.

PS> Get-Process -Name powershell | Format-Wide -Property Id

2760                                    3448

열이 포함된 Format-Wide 표시 제어

Format-Wide cmdlet을 사용하면 한 번에 하나의 속성만 표시할 수 있습니다. 이 cmdlet은 한 줄에 하나의 요소만 표시되는 간단한 목록을 표시하는 데 유용합니다. 간단한 목록을 표시하려면 다음과 같이 입력하여 Column 매개 변수의 값을 1로 설정하십시오.

Get-Command Format-Wide -Property Name -Column 1

Format-List를 사용하여 목록 보기

Format-List cmdlet은 다음과 같이 각 속성에 레이블이 지정되어 있고 이러한 각 속성이 별도의 줄에 표시되는 목록 형식으로 개체를 표시합니다.

PS> Get-Process -Name powershell | Format-List

Id      : 2760
Handles : 1242
CPU     : 3.03125
Name    : powershell

Id      : 3448
Handles : 328
CPU     : 1.0625
Name    : powershell

다음과 같이 속성을 원하는 대로 지정할 수 있습니다.

PS> Get-Process -Name powershell | Format-List -Property ProcessName,FileVersion
,StartTime,Id


ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:42:00
Id          : 2760

ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:54:28
Id          : 3448

와일드카드와 함께 Format-List를 사용하여 자세한 정보 보기

Format-List cmdlet을 사용하면 와일드카드를 해당 Property 매개 변수의 값으로 사용할 수 있습니다. 이 경우 자세한 정보를 표시할 수 있습니다. 필요한 것보다 많은 정보가 개체에 포함되는 경우가 종종 있는데, 이것은 Windows PowerShell이 기본적으로 모든 속성 값을 표시하지 않기 때문입니다. 개체의 속성을 모두 표시하려면 Format-List -Property * 명령을 사용합니다. 다음 명령은 단일 프로세스의 출력을 위해 60개 이상의 줄을 생성합니다.

Get-Process -Name powershell | Format-List -Property *

Format-List 명령은 자세한 정보를 표시하는 데 유용하지만 많은 항목의 개요를 출력하려는 경우에는 대개 간단한 표 형식의 보기가 더 유용합니다.

Format-Table을 사용하여 표 형식으로 출력

속성 이름이 지정되지 않은 Format-Table cmdlet을 사용하여 Get-Process 명령의 출력 형식을 지정하면 형식을 지정하지 않고 이와 같은 작업을 수행할 때와 똑같은 내용이 출력됩니다. 그 이유는 대부분의 Windows PowerShell 개체와 마찬가지로 프로세스도 대개 표 형식으로 표시되기 때문입니다.

PS> Get-Process -Name powershell | Format-Table

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   1488       9    31568      29460   152     3.53   2760 powershell
    332       9    23140        632   141     1.06   3448 powershell

Format-Table 출력 향상(AutoSize)

표 형식의 보기는 비교 가능한 많은 정보를 표시하는 데 유용하지만 열이 너무 좁아 데이터를 모두 표시할 수 없는 경우에는 정보를 해석하기 어려울 수 있습니다. 예를 들어 프로세스의 Path, ID, Name 및 Company를 표시하려고 하면 다음과 같이 프로세스의 Path 열과 Company 열의 출력이 잘립니다.

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company

Path                Name                                 Id Company
----                ----                                 -- -------
C:\Program Files... powershell                         2836 Microsoft Corpor...

Format-Table 명령을 실행할 때 AutoSize 매개 변수를 지정하면 Windows PowerShell은 표시할 실제 데이터를 기반으로 열 너비를 계산합니다. 이렇게 하면 다음과 같이 Path 열은 읽을 수 있지만 Company 열은 여전히 잘린 채로 있습니다.

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company -
AutoSize

Path                                                    Name         Id Company
----                                                    ----         -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2836 Micr...

Format-Table cmdlet을 실행하면 여전히 데이터가 잘릴 수 있지만 화면 끝에 있는 데이터만 잘립니다. 마지막으로 표시되는 속성을 제외하고 속성에는 가장 긴 데이터 요소를 올바로 표시하는 데 필요한 충분한 크기가 지정됩니다. Property 값 목록에서 PathCompany의 위치를 바꾸면 회사 이름은 보이지만 경로는 잘립니다.

PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path -
AutoSize

Company               Name         Id Path
-------               ----         -- ----
Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...

Format-Table 명령은 속성 목록의 시작 부분에 더 가까이 있을수록 더 중요한 속성으로 간주하고 시작 부분에 가장 가까이 있는 속성을 완전히 표시하려고 합니다. Format-Table 명령은 속성을 모두 표시할 수 없으면 일부 열을 표시하지 않는 대신 경고를 표시합니다. 다음과 같이 Name을 목록의 마지막 속성으로 지정하면 이 동작을 재현할 수 있습니다.

PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name -
AutoSize

WARNING: column "Name" does not fit into the display and was removed.

Company               Path                                                    I
                                                                              d
-------               ----                                                    -
Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6

위의 출력에서는 목록에 맞게 조정하기 위해 ID 열이 잘리고 해당 열 머리글이 두 줄로 표시됩니다. 열 크기를 자동으로 조정해도 항상 원하는 대로 표시되지는 않습니다.

열에 Format-Table 출력 래핑(Wrap)

Wrap 매개 변수를 사용하여 긴 Format-Table 데이터를 해당 열 안에서 래핑할 수 있습니다. 다음과 같이 Wrap 매개 변수를 단독으로 사용하면 AutoSize를 지정하지 않은 경우에도 예상되는 작업을 수행하지 않아도 됩니다.

PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company,
Path

Name                                 Id Company             Path
----                                 -- -------             ----
powershell                         2836 Microsoft Corporati C:\Program Files\Wi
                                        on                  ndows PowerShell\v1
                                                            .0\powershell.exe 

Wrap 매개 변수를 단독으로 사용하면 프로세스 속도가 크게 느려지지 않는다는 이점이 있습니다. 큰 디렉터리 시스템의 파일을 반복해서 표시할 때 AutoSize를 사용하면 첫 번째 출력 항목을 표시할 때까지 매우 많은 시간이 걸리고 많은 메모리가 사용될 수 있습니다.

시스템 로드에 신경 쓰지 않아도 되는 경우에는 AutoSizeWrap 매개 변수와 함께 잘 작동합니다. Wrap 매개 변수 없이 AutoSize를 지정한 경우와 같이 초기 열에는 항상 하나의 줄에 항목을 표시하는 데 필요한 충분한 너비가 할당됩니다. 유일한 차이점은 다음과 같이 마지막 열이 필요에 따라 래핑된다는 것입니다.

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Company,Path

Name         Id Company               Path
----         -- -------               ----
powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\
                                      powershell.exe

가장 긴 열을 가장 먼저 지정하면 일부 열이 표시되지 않을 수 있으므로 가장 작은 데이터 요소를 가장 먼저 지정하는 것이 안전합니다. 다음 예제에서는 매우 긴 경로 요소를 가장 먼저 지정했기 때문에 래핑을 사용했지만 마지막 Name 요소가 여전히 표시되지 않습니다.

 PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,I
d,Company,Name

WARNING: column "Name" does not fit into the display and was removed.

Path                                                      Id Company
----                                                      -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporat
                                                             ion

표 형식의 출력 구성(-GroupBy)

표 형식의 출력을 제어하는 데 사용할 수 있는 또 다른 유용한 매개 변수는 GroupBy입니다. 특히 긴 표 형식의 목록은 비교하기 어려울 수 있지만 GroupBy 매개 변수를 사용하면 속성 값을 기반으로 출력을 그룹화할 수 있습니다. 예를 들어 다음과 같이 프로세스를 더 쉽게 검사하기 위해 속성 목록에서 회사 값을 제거하여 해당 프로세스를 회사별로 그룹화할 수 있습니다.

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Path -GroupBy Company


   Company: Microsoft Corporation

Name         Id Path
----         -- ----
powershell 1956 C:\Program Files\Windows PowerShell\v1.0\powershell.exe
powershell 2656 C:\Program Files\Windows PowerShell\v1.0\powershell.exe




목차