명령 출력 작업

 

적용 대상: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

마지막으로 수정된 항목: 2006-08-21

Exchange 관리 셸에서는 명령 출력 형식을 지정하는 데 사용할 수 있는 여러 가지 방법을 제공합니다. 이 항목에서는 다음 주제에 대해 설명합니다.

  • 데이터 형식을 지정하는 방법**   Format-List**, Format-TableFormat-Wide cmdlet를 사용하여 사용자가 보는 데이터의 형식을 지정하는 방법을 제어합니다.

  • 데이터를 출력하는 방법**   Out-Host** 및 Out-File cmdlet를 사용하여 데이터를 Exchange 관리 셸 콘솔 창 또는 파일에 출력할지 여부를 결정합니다. 이 항목에는 Microsoft Internet Explorer에 데이터를 출력하는 샘플 스크립트가 포함되어 있습니다.

  • 데이터를 필터링하는 방법   다음 필터링 방법 중 하나를 사용하여 데이터를 필터링합니다.

    • 특정 cmdlet에서 사용할 수 있는 서버 쪽 필터링

    • 명령 결과를 Where-Object cmdlet로 파이프하여 모든 cmdlet에서 사용할 수 있는 클라이언트 쪽 필터링

이 항목에서 설명하는 기능을 사용하려면 다음 개념을 잘 이해하고 있어야 합니다.

데이터 형식을 지정하는 방법

파이프라인의 끝에서 형식 지정 cmdlet를 호출하는 경우 기본 형식 지정을 다시 정의하여 표시되는 데이터와 데이터가 표시되는 방식을 제어할 수 있습니다. 형식 지정 cmdlet는 Format-List, Format-TableFormat-Wide입니다. 각 cmdlet에는 다른 형식 지정 cmdlet와는 다른 고유한 개별 출력 스타일이 있습니다.

Format-List

Format-List cmdlet는 파이프라인의 입력값을 사용하여 각 개체의 지정된 모든 속성을 수직 열 목록으로 출력합니다. Property 매개 변수를 사용하여 표시하려는 속성을 지정할 수 있습니다. 매개 변수를 지정하지 않고 Format-List cmdlet를 호출하면 모든 속성이 출력됩니다. Format-List cmdlet는 줄을 자르는 대신 줄 바꿈합니다. Format-List cmdlet를 사용하는 가장 좋은 방법 중 하나는 추가 정보 또는 보다 중요한 정보를 검색할 수 있도록 cmdlet의 기본 출력을 다시 정의하는 것입니다.

예를 들어 Get-Mailbox cmdlet를 호출하면 표 형식으로 제한된 양의 정보만 볼 수 있습니다. Get-Mailbox cmdlet 출력을 Format-List cmdlet로 파이프하고 보려는 추가 정보 또는 보다 중요한 정보에 대한 매개 변수를 추가하면 원하는 출력을 검색할 수 있습니다.

또한 속성 이름의 일부분과 함께 와일드카드 문자 "*"를 지정할 수 있습니다. 와일드카드 문자를 포함하는 경우 각 속성 이름을 개별적으로 입력하지 않고 일치하는 여러 속성을 검색할 수 있습니다. 예를 들어 Get-Mailbox | Format-List -Property Email* Email로 시작하는 모든 속성을 반환합니다.

다음 예는 Get-Mailbox cmdlet에서 반환하는 동일한 데이터를 볼 수 있는 다른 방법을 보여 줍니다.

Get-MailBox TestUser1

Name                      Alias                Server           StorageQuota
----                      -----                ------           ------------
TestUser1                  TestUser1             e12           unlimited

첫 번째 예에서는 특정 형식을 지정하지 않고 Get-Mailbox cmdlet를 호출하여 기본 출력이 표 형식으로 표시되고 미리 결정된 속성 집합을 포함합니다.

Get-Mailbox TestUser1 | Format-List -Property Name,Alias,EmailAddresses

Name           : TestUser1
Alias          : TestUser1
EmailAddresses : {SMTP:TestUser1@contoso.com, X400:c=US;a= ;p=Contoso;o=Exchange;s=TestUser1;}
Get-Mailbox TestUser1 | Format-List -Property Name, Alias, Email*

두 번째 예에서는 Get-Mailbox cmdlet 출력이 특정 속성과 함께 Format-List cmdlet로 파이프됩니다. 보이는 것처럼 출력 형식과 내용이 크게 다릅니다.

Name                      : Test User
Alias                     : TestUser1
EmailAddresses            : {SMTP:TestUser1@contoso.com, X400:c=US;a= ;p=First
                            Organization;o=Exchange;s=User;g=Test;}
EmailAddressPolicyEnabled : True

마지막 예에서 Get-Mailbox cmdlet 출력은 두 번째 예에서와 같이 Format-List cmdlet로 파이프됩니다. 그러나 마지막 예에서는 와일드카드 문자를 사용되어 Email로 시작하는 일치하는 모든 속성을 검색합니다.

두 개 이상의 개체가 Format-List cmdlet로 전달되면 개체에 대해 지정된 모든 속성이 개체별로 그룹화되어 표시됩니다. 표시 순서는 cmdlet의 기본 매개 변수에 따라 다릅니다. 이러한 매개 변수는 대부분의 경우 Name 매개 변수 또는 Identity 매개 변수입니다. 예를 들어 Get-Childitem cmdlet를 호출하면 기본적으로 파일 이름이 사전순으로 표시됩니다. 이러한 동작을 변경하려면 Format-List cmdlet를 GroupBy 매개 변수 및 출력 그룹화 기준인 속성 값 이름과 함께 호출해야 합니다. 예를 들어 다음 명령은 디렉터리의 모든 파일을 확장명으로 그룹화하여 나열합니다.

Get-Childitem | Format-List Name,Length -GroupBy Extension

    Extension: .xml

Name   : Config_01.xml
Length : 5627

Name   : Config_02.xml
Length : 3901


    Extension: .bmp

Name   : Image_01.bmp
Length : 746550

Name   : Image_02.bmp
Length : 746550


    Extension: .txt

Name   : Text_01.txt
Length : 16822

Name   : Text_02.txt
Length : 9835

이 예에서 Format-List cmdlet는 GroupBy 매개 변수에서 지정한 Extension 속성으로 항목을 그룹화합니다. 파이프라인 스트림에 있는 개체의 유효한 모든 속성과 함께 GroupBy 매개 변수를 사용할 수 있습니다.

Format-Table

Format-Table cmdlet를 사용하여 항목을 레이블 헤더 및 속성 데이터 열과 함께 테이블 형식으로 표시할 수 있습니다. 기본적으로 Get-ProcessGet-Service cmdlet와 같은 여러 cmdlet는 테이블 형식으로 출력합니다. Format-Table cmdlet의 매개 변수에는 PropertiesGroupBy 매개 변수가 포함됩니다. 이러한 매개 변수는 Format-List cmdlet와 작동하는 것과 동일하게 작동합니다.

또한 Format-Table cmdlet는 Wrap 매개 변수를 사용합니다. 이 매개 변수를 사용하면 긴 줄의 속성 정보가 줄의 끝에서 잘리는 대신 완전히 표시됩니다. Wrap 매개 변수를 사용하여 반환되는 정보를 표시하는 방법에 대해 알아보려면 다음 두 예에서 Get-Command 명령 출력을 비교합니다.

첫 번째 예에서 Get-Process cmdlet에 대한 명령 정보를 표시하기 위해 Get-Command cmdlet를 사용한 경우 Definition 속성에 대한 정보가 잘립니다.

Get-Command Get-Process | Format-Table Name,Definition

Name                                    Definition
----                                    ----------
get-process                             get-process [[-ProcessName] String[]...

두 번째 예에서는 Wrap 매개 변수를 명령에 추가하여 Definition 속성의 전체 내용을 표시합니다.

Get-Command Get-Process | Format-Table Name,Definition -Wrap

Name                                    Definition
----                                    ----------
get-process                             get-process [[-ProcessName] String[]] [
                                        -Verbose] [-Debug] [-ErrorAction Action
                                        Preference] [-ErrorVariable String] [-O
                                        utVariable String] [-OutBuffer Int32]
                                        get-process -Id Int32[] [-Verbose] [-De
                                        bug] [-ErrorAction ActionPreference] [-
                                        ErrorVariable String] [-OutVariable Str
                                        ing] [-OutBuffer Int32]
                                        get-process -Input Process[] [-Verbose]
                                         [-Debug] [-ErrorAction ActionPreferenc
                                        e] [-ErrorVariable String] [-OutVariabl
                                        e String] [-OutBuffer Int32] 

또한 Format-List cmdlet와 같이 속성 이름의 일부분과 함께 와일드카드 문자 "*"를 지정할 수 있습니다. 와일드카드 문자를 포함하면 각 속성 이름을 개별적으로 입력하지 않고 일치하는 여러 속성을 검색할 수 있습니다.

Format-Wide

Format-Wide cmdlet를 사용하면 다른 형식 cmdlet보다 더 간편하게 출력을 제어할 수 있습니다. 기본적으로 Format-Wide cmdlet는 출력 줄에 가능한 많은 속성 값 열을 표시하려고 합니다. 매개 변수를 추가하여 표시되는 열 수와 출력 공간 사용 방법을 제어할 수 있습니다.

대부분의 기본적인 사용에서 매개 변수를 지정하지 않고 Format-Wide cmdlet를 호출하면 페이지에 맞춰 열을 표시하도록 출력을 정렬합니다. 예를 들어 Get-Childitem cmdlet를 실행하여 출력을 Format-Wide cmdlet로 파이프하면 정보가 다음과 같이 표시됩니다.

Get-ChildItem | Format-Wide

    Directory: FileSystem::C:\WorkingFolder

Config_01.xml                           Config_02.xml
Config_03.xml                           Config_04.xml
Config_05.xml                           Config_06.xml
Config_07.xml                           Config_08.xml
Config_09.xml                           Image_01.bmp
Image_02.bmp                            Image_03.bmp
Image_04.bmp                            Image_05.bmp
Image_06.bmp                            Text_01.txt
Text_02.txt                             Text_03.txt
Text_04.txt                             Text_05.txt
Text_06.txt                             Text_07.txt
Text_08.txt                             Text_09.txt
Text_10.txt                             Text_11.txt
Text_12.txt

일반적으로 매개 변수를 지정하지 않고 Get-Childitem cmdlet를 호출하면 디렉터리의 모든 파일 이름이 속성 표로 표시됩니다. 이 예에서는 Get-Childitem cmdlet 출력을 Format-Wide cmdlet로 파이프하여 출력이 두 개의 이름 열로 표시됩니다. Format-Wide cmdlet 다음에 오는 속성 이름에 의해 지정된 속성 유형이 한 번에 하나만 표시될 수 있습니다. Autosize 매개 변수를 추가하면 두 개의 열 표시에서 화면 너비에 맞춰 모든 열 표시로 출력이 변경됩니다.

Get-ChildItem | Format-Wide -AutoSize

    Directory: FileSystem::C:\WorkingFolder

Config_01.xml   Config_02.xml   Config_03.xml   Config_04.xml   Config_05.xml
Config_06.xml   Config_07.xml   Config_08.xml   Config_09.xml   Image_01.bmp
Image_02.bmp    Image_03.bmp    Image_04.bmp    Image_05.bmp    Image_06.bmp
Text_01.txt     Text_02.txt     Text_03.txt     Text_04.txt     Text_05.txt
Text_06.txt     Text_07.txt     Text_08.txt     Text_09.txt     Text_10.txt
Text_11.txt     Text_12.txt

이 예에서 표는 두 개의 열이 아니라 다섯 개의 열로 정렬됩니다. Column 매개 변수를 사용하면 다음과 같이 최대 열 수를 지정하여 정보를 표시하므로 보다 강력하게 출력을 제어할 수 있습니다.

Get-ChildItem | Format-Wide -Columns 4

    Directory: FileSystem::C:\WorkingFolder

Config_01.xml       Config_02.xml       Config_03.xml       Config_04.xml
Config_05.xml       Config_06.xml       Config_07.xml       Config_08.xml
Config_09.xml       Image_01.bmp        Image_02.bmp        Image_03.bmp
Image_04.bmp        Image_05.bmp        Image_06.bmp        Text_01.txt
Text_02.txt         Text_03.txt         Text_04.txt         Text_05.txt
Text_06.txt         Text_07.txt         Text_08.txt         Text_09.txt
Text_10.txt         Text_11.txt         Text_12.txt

이 예에서는 Column 매개 변수를 사용하여 열 수를 네 개로 지정했습니다.

데이터를 출력하는 방법

Out-Host 및 Out-File

Out-Host cmdlet는 파이프라인의 끝에 나타나지 않는 기본 cmdlet입니다. 모든 형식 지정 적용되면 Out-Host cmdlet는 최종 출력을 콘솔 창으로 보내 표시합니다. Out-Host cmdlet는 기본 출력이므로 명시적으로 호출할 필요가 없습니다. 명령의 마지막 cmdlet로 Out-Host cmdlet를 호출하여 콘솔 창으로 출력 보내기를 다시 정의할 수 있습니다. 그러면 다음 예에서와 같이 Out-File cmdlet는 명령에서 지정한 파일에 출력을 씁니다.

Get-ChildItem | Format-Wide -Columns 4 | Out-File c:\OutputFile.txt

이 예에서 Out-Host cmdlet 는 Get-ChildItem | Format-Wide -Columns 4 명령에서 표시되는 정보를 OutputFile.txt라는 파일에 씁니다. 또한 리디렉션 연산자인 오른쪽 꺾쇠 괄호(>)를 사용하여 파이프라인 출력을 파일로 리디렉션할 수 있습니다. 원본 파일을 바꾸지 않고 명령의 파이프라인 출력을 기존 파일에 추가하려면 다음 예에서와 같이 오른쪽 이중 꺾쇠 괄호(>>)를 사용합니다.

Get-ChildItem | Format-Wide -Columns 4 >> C:\OutputFile.txt

이 예에서는 형식 지정을 위해 Get-Childitem cmdlet의 출력을 Format-Wide cmdlet로 파이프한 다음 OutputFile.txt 파일의 끝에 씁니다. OutputFile.txt 파일이 없는 경우 오른쪽 이중 꺾쇠 괄호(>>)를 사용하여 파일을 만듭니다.

파이프라인에 대한 자세한 내용은 파이프라이닝을 참조하십시오.

이전 예에서 사용한 구문에 대한 자세한 내용은 구문을 참조하십시오.

Internet Explorer에서 데이터 보기

Exchange 관리 셸에서의 스크립팅 유연성과 용이성으로 인해 명령에서 반환하는 데이터를 사용하여 형식을 지정하고 자유로운 방식으로 출력할 수 있습니다.

다음 예에서는 간단한 스크립트를 사용하여 명령에서 반환하는 데이터를 출력하고 Internet Explorer에 표시하는 방법을 보여 줍니다. 이 스크립트는 파이프라인을 통과하는 개체를 사용하여 Internet Explorer 창을 연 다음 Internet Explorer에 데이터를 표시합니다.

$Ie = New-Object -Com InternetExplorer.Application
$Ie.Navigate("about:blank")
While ($Ie.Busy) { Sleep 1 }
$Ie.Visible = $True
$Ie.Document.Write("$Input")
# If the previous line doesn't work on your system, uncomment the line below.
# $Ie.Document.IHtmlDocument2_Write(\"$Input\")
$Ie

이 스크립트를 사용하려면 스크립트가 실행될 컴퓨터의 C:\Program Files\Microsoft\Exchange Server\Scripts 디렉터리에 스크립트를 저장합니다. 파일 이름을 Out-Ie.ps1이라고 지정합니다. 파일을 저장한 다음 일반 cmdlet로 스크립트를 사용할 수 있습니다.

Out-Ie 스크립트는 받은 데이터가 올바른 HTML임을 가정합니다. HTML로 보려는 데이터를 변환하려면 명령 결과를 ConvertTo-Html cmdlet로 파이프해야 합니다. 그런 다음 명령 결과를 Out-Ie 스크립트로 파이프할 수 있습니다. 다음 예는 Internet Explorer 창에서 디렉터리 목록을 보는 방법을 보여 줍니다.

Get-ChildItem | Select Name,Length | ConvertTo-Html | Out-Ie

데이터를 필터링하는 방법

Exchange Management 셸을 통해 서버, 사서함, Active Directory 디렉터리 서비스 및 조직의 다른 개체에 대한 대량의 정보에 액세스할 수 있습니다. 이러한 정보에 액세스하면 사용자 환경에 대한 이해를 높일 수 있지만 지나치게 많은 정보가 부담이 될 수 있습니다. Exchange 관리 셸을 사용하여 이러한 정보를 제어하고 필터링 기능을 사용하여 보려는 데이터만 반환할 수 있습니다. 다음 두 가지 유형의 필터링 기능을 사용할 수 있습니다.

  • 서버 쪽 필터링   서버 쪽 필터링은 명령줄에서 지정한 필터를 사용하여 쿼리한 Exchange 서버에 해당 필터를 전송합니다. 해당 서버에서 쿼리를 처리하고 지정한 필터와 일치하는 데이터만 반환합니다.

    수십만 또는 수만 개의 결과를 반환할 수 있는 개체에 대해서만 서버 쪽 필터링을 수행합니다. 따라서 Get-Mailbox cmdlet와 같은 받는 사람 관리 cmdlet와 Get-Queue cmdlet와 같은 큐 관리 cmdlet에서만 서버 쪽 필터링을 지원합니다. 이러한 cmdlet는 Filter 매개 변수를 지원합니다. 이 매개 변수는 지정한 필터 식을 처리하기 위해 서버로 전송합니다.

  • 클라이언트 쪽 필터링   클라이언트 쪽 필터링은 현재 작업하고 있는 로컬 콘솔 창에 있는 개체에 대해 수행됩니다. 클라이언트 쪽 필터링을 사용하면 cmdlet는 로컬 콘솔 창에 대해 수행 중인 작업과 일치하는 모든 개체를 검색합니다. 그러면 Exchange 관리 셸은 반환되는 모든 결과에 클라이언트 쪽 필터링을 적용하여 필터와 일치하는 결과만 반환합니다. 모든 cmdlet가 클라이언트 쪽 필터링을 지원합니다. 명령 결과를Where-Object cmdlet로 파이프하여 클라이언트 쪽 필터링을 호출합니다.

서버 쪽 필터링

서버 쪽 필터링 구현은 서버 쪽 필터링이 지원되는 cmdlet에 따라 다릅니다. 서버 쪽 필터링은 반환된 개체의 특정 속성에 대해서만 사용하도록 설정됩니다.

서버 쪽 필터링을 사용하여 받는 사람을 관리하는 방법에 대한 자세한 내용은 받는 사람 명령에서 필터 만들기를 참조하십시오.

서버 쪽 필터링을 사용하여 큐를 관리하는 방법에 대한 자세한 내용은 큐 필터링을 참조하십시오.

클라이언트 쪽 필터링

클라이언트 쪽 필터링에는 어떤 cmdlet도 사용할 수 있습니다. 또한 여기에는 서버 쪽 필터링을 지원하는 cmdlet도 포함됩니다. 이 항목의 앞 부분에서 설명한 것처럼 클라이언트 쪽 필터링은 파이프라인의 이전 명령에서 반환한 모든 데이터를 수락하고 지정한 필터와 일치하는 결과만 반환합니다. Where-Object cmdlet는 이 필터링을 수행하며 Where라고 줄여 쓸 수 있습니다.

데이터가 파이프라인을 통과하면 Where cmdlet가 이전 개체에서 데이터를 받아 다음 개체로 전달하기 전에 해당 데이터를 필터링합니다. 필터링은 Where 명령에서 정의한 스크립트 블록에 따라 다릅니다. 스크립트 블록은 개체의 속성 및 값에 따라 데이터를 필터링합니다.

Clear-Host cmdlet는 콘솔 창을 지우는 데 사용됩니다. 예를 들어 다음 명령을 실행하면 Clear-Host cmdlet에 대해 정의된 모든 별칭을 찾을 수 있습니다.

Get-Alias | Where {$_.Definition -eq "Clear-Host"}

CommandType     Name                            Definition
-----------     ----                            ----------
Alias           clear                           clear-host
Alias           cls                             clear-host

Get-Alias cmdlet와 Where 명령은 함께 작동하여 Clear-Host cmdlet에 대해 정의된 별칭 목록을 반환합니다. 다른 cmdlet에 대해 정의된 별칭 목록은 반환하지 않습니다. 표 1에서는 예에서 사용된 Where 명령의 각 요소에 대해 간단하게 설명합니다.

표 1   Where 명령 요소

요소 설명

{ }

필터를 정의하는 스크립트 블록을 묶는 중괄호입니다.

$_

이 특수한 변수는 자동으로 시작되어 파이프라인의 개체에 바인딩됩니다.

정의

Definition 속성은 별칭 정의 이름을 저장하는 현재 파이프라인 개체의 속성입니다. $_ 변수와 함께 Definition을 사용하면 속성 이름 앞에 마침표가 옵니다.

-eq

이 "같음" 비교 연산자는 결과가 식에서 제공된 속성 값과 정확하게 일치해야 함을 지정하는 데 사용됩니다.

“Clear-Host”

이 예에서 “Clear-Host”는 명령이 구문 분석하는 값입니다.

위의 예에서 Get-Alias cmdlet에서 반환하는 개체는 시스템에 있는 정의된 모든 별칭을 나타냅니다. 이러한 개체를 명령줄에서 확인할 수 없지만 별칭은 파이프라인을 통해 수집되어 Where cmdlet로 전달됩니다. Where cmdlet는 스크립트 블록의 정보를 사용하여 별칭 개체에 필터를 적용합니다.

특수한 변수 $_는 전달되는 개체를 나타냅니다. $_ 변수는 셸에서 자동으로 시작되며 현재 파이프라인 개체에 바인딩됩니다. 이 특수한 변수에 대한 자세한 내용은 셸 변수를 참조하십시오.

표준 "점" 표기법(object.property)을 사용하여 평가할 개체의 정확한 속성을 정의하도록 Definition 속성이 추가됩니다. 그런 다음 -eq 비교 연산자가 이 속성 값을 "Clear-Host"와 비교합니다. 이 기준과 일치하는 Definition 속성을 가진 개체만 콘솔 창으로 전달되어 출력됩니다. 비교 연산자에 대한 자세한 내용은 비교 연산자를 참조하십시오.