항목
    about_Remote_Output

간단한 설명
    원격 명령의 출력을 해석하고 형식을 지정하는 방법에 대해 설명합니다.

자세한 설명
    원격 컴퓨터에서 실행된 명령의 출력은 로컬 컴퓨터에서 실행된 동일한 명령의 출력과 유사할 수 있지만 몇 
    가지 주요 차이점이 있습니다.

    이 항목에서는 원격 컴퓨터에서 실행되는 명령의 출력을 해석하고, 형식을 지정하고, 표시하는 방법에 대해 
    설명합니다.

                    
 컴퓨터 이름 표시

    Invoke-Command cmdlet을 사용하여 원격 컴퓨터에서 명령을 실행하는 경우 명령은 데이터를 생성한 컴퓨터의 
    이름이 포함된 개체를 반환합니다. 원격 컴퓨터 이름은 PSComputerName 속성에 저장됩니다.

    많은 명령의 경우 PSComputerName이 기본적으로 표시됩니다. 예를 들어 다음 명령은 두 원격 컴퓨터, 
    Server01 및 Server02에서 Get-Culture 명령을 실행합니다. 아래에 나타나는 출력에는 명령이 
    실행된 원격 컴퓨터의 이름이 포함되어 있습니다.

        C:\PS> invoke-command -script {get-culture} -comp Server01, Server02

        LCID  Name    DisplayName                PSComputerName
        ----  ----    -----------                --------------
        1033  en-US   English (United States)    Server01
        1033  es-AR   Spanish (Argentina)        Server02

    
    Invoke-Command의 HideComputerName 매개 변수를 사용하여 PSComputerName 속성을 숨길 수 있습니다. 
    이 매개 변수는 한 원격 컴퓨터에서만 데이터를 수집하는 명령에 사용하도록 설계되었습니다.

    다음 명령은 Server01 원격 컴퓨터에서 Get-Culture 명령을 실행합니다. 이 명령은 
    HideComputerName 매개 변수를 사용하여 PSComputerName 속성과 관련 속성을 숨깁니다.


        C:\PS> invoke-command -scr {get-culture} -comp Server01 -HideComputerName

        LCID             Name             DisplayName
        ----             ----             -----------
        1033             en-US            English (United States)



     PSComputerName 속성이 기본적으로 표시되지 않는 경우에도 이 속성을 표시할 수 있습니다. 

     예를 들어 다음 명령은 Format-Table cmdlet을 사용하여 PSComputerName 속성을 원격 
     Get-Date 명령의 출력에 추가합니다.

        C:\PS> $dates = invoke-command -script {get-date} -computername Server01, Server02
        C:\PS> $dates | format-table DateTime, PSComputerName -auto

        DateTime                               PSComputerName
        --------                               --------------
        2008년 7월 21일 월요일 오후 7:16:58    Server01
        2008년 7월 21일 월요일 오후 7:16:58    Server02      


 MachineName 속성 표시

    Get-Process, Get-Service 및 Get-EventLog와 같은 몇 가지 cmdlet에는 원격 컴퓨터에서 개체를 
    가져오는 ComputerName 매개 변수가 있습니다. 이러한 cmdlet은 Windows PowerShell 원격을 사용하지 
    않으므로 Windows PowerShell에서 원격 기능을 사용하도록 구성되지 않은 컴퓨터에서도 이러한 cmdlet을 
    사용할 수 있습니다.

    이러한 cmdlet이 반환하는 개체는 원격 컴퓨터의 이름을 MachineName 속성에 저장합니다. 이러한 개체에는 
    PSComputerName 속성이 없습니다.

    예를 들어 이 명령은 Server01 및 Server02 원격 컴퓨터의 PowerShell 프로세스를 가져옵니다. 
    기본 표시에는 MachineName 속성이 포함되어 있지 않습니다. 

        C:\PS> get-process powershell -computername server01, server02


        Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
        -------  ------    -----      ----- -----   ------     -- -----------
            920      38    97524     114504   575     9.66   2648 powershell
            194       6    24256      32384   142            3020 powershell
            352      27    63472      63520   577     3.84   4796 powershell


    Format-Table cmdlet을 사용하여 프로세스 개체의 MachineName 속성을 표시할 수 있습니다. 

    예를 들어 다음 명령은 $p 변수에 프로세스를 저장한 다음 파이프라인 연산자(|)를 사용하여 $p에 있는 프로세스를 
    Format-Table 명령으로 보냅니다. 이 명령은 Format-Table의 Property 매개 변수를 사용하여 표시에 MachineName 
    속성을 포함합니다.


        C:\PS> $p = get-process powershell -comp Server01, Server02
        C:\PS> $P | format-table -property ID, ProcessName, MachineName -auto


        Id ProcessName MachineName
        -- ----------- -----------
        2648 powershell  Server02
        3020 powershell  Server01
        4796 powershell  Server02

    
    더욱 복잡한 다음 명령은 MachineName 속성을 기본 프로세스 표시에 추가합니다. 이 명령은 해시 테이블을 사용하여 
    계산된 속성을 지정합니다. 이 명령의 사용에 대해 이해해야 할 필요는 없습니다. 억음 기호(`)는 줄 계속 문자입니다.

      
        C:\PS> $p = get-process powershell -comp Server01, Server02

        C:\PS> $p | format-table -property Handles, `
                    @{Label="NPM(K)";Expression={[int]($_.NPM/1024)}}, `
                    @{Label="PM(K)";Expression={[int]($_.PM/1024)}}, `
                    @{Label="WS(K)";Expression={[int]($_.WS/1024)}}, `
                    @{Label="VM(M)";Expression={[int]($_.VM/1MB)}}, `
                    @{Label="CPU(s)";Expression={if ($_.CPU -ne $()){ $_.CPU.ToString("N")}}}, `
                    Id, ProcessName, MachineName -auto
       

        Handles NPM(K) PM(K)  WS(K) VM(M) CPU(s)   Id ProcessName MachineName
        ------- ------ -----  ----- ----- ------   -- ----------- -----------
            920     38 97560 114532   576        2648 powershell  Server02     
            192      6 24132  32028   140        3020 powershell  Server01   
            438     26 48436  59132   565        4796 powershell  Server02   

 역직렬화된 개체
    출력을 생성하는 원격 명령을 실행하는 경우 명령 출력은 네트워크를 통해 로컬 컴퓨터로 다시 전송됩니다. 

    대부분의 라이브 Microsoft .NET Framework 개체(예: Windows PowerShell cmdlet이 반환하는 개체)가 네트워크를 
    통해 전송될 수 없기 때문에 라이브 개체는 "직렬화"됩니다. 즉, 라이브 개체는 개체와 개체의 속성에 대한 XML 
    표현으로 변환됩니다. 그런 다음 XML 기반의 직렬화된 개체는 네트워크를 통해 전송됩니다. 

    로컬 컴퓨터에서 Windows PowerShell은 XML 기반의 직렬화된 개체를 받고 XML 기반 개체를 표준 .NET Framework 
    개체로 변환하여 "역직렬화"합니다.

    그러나 역직렬화된 개체는 라이브 개체가 아닙니다. 역직렬화된 개체는 개체가 직렬화된 시점의 개체 스냅숏이며 
    속성을 포함하지만 메서드는 포함하지 않습니다. Windows PowerShell에서 이러한 개체를 사용하고 관리할 수 
    있습니다. 예를 들어 파이프라인에서 이러한 개체를 전달하고, 선택된 속성을 표시하고, 이러한 개체의 형식을 지정할 
    수 있습니다.

    대부분의 역직렬화된 개체는 Types.ps1xml 또는 Format.ps1xml 파일의 항목에 따라 표시를 위해 
    자동으로 형식이 지정됩니다. 그러나 로컬 컴퓨터에는 원격 컴퓨터에서 생성된 일부 역직렬화된 개체에 대한 형식 
    지정 파일이 없을 수도 있습니다. 개체의 형식이 지정되지 않으면 각 개체의 모든 속성이 콘솔에서 스트리밍 
    목록으로 나타납니다. 

    개체의 형식이 자동으로 지정되지 않으면 Format-Table, Format-List 등의 형식 지정 cmdlet을 사용하여 선택된 
    속성의 형식을 지정하고 표시할 수 있습니다. 또는 Out-GridView cmdlet을 사용하여 개체를 표로 표시할 수 있습니다.

    또한 로컬 컴퓨터에 없는 cmdlet을 사용하는 명령을 원격 컴퓨터에서 실행하는 경우 이 명령이 반환하는 개체의 형식 
    지정 파일이 로컬 컴퓨터에 없기 때문에 해당 개체의 형식이 제대로 지정되지 않을 수 있습니다. 다른 컴퓨터에서 
    형식 지정 데이터를 가져오려면 Get-FormatData 및 Export-FormatData cmdlet을 사용합니다. 

    GUID, DirectoryInfo 개체 등의 일부 개체 유형은 수신되었을 때 라이브 개체로 다시 변환됩니다. 이러한 개체에는 
    특수한 처리나 형식 지정이 필요하지 않습니다.  



 결과 정렬
    cmdlet의 ComputerName 매개 변수에 있는 컴퓨터 이름의 순서에 따라 Windows PowerShell이 원격 컴퓨터에 
    연결하는 순서가 결정됩니다. 그러나 결과는 로컬 컴퓨터에서 받는 순서대로 나타나므로 연결 순서와 다를 
    수도 있습니다.

    결과의 순서를 변경하려면 Sort-Object cmdlet을 사용합니다. PSComputerName 또는 MachineName 속성을 
    기준으로 정렬할 수 있습니다. 또한 여러 컴퓨터에서 제공된 결과가 분산되도록 개체의 다른 속성을 기준으로 
    정렬할 수도 있습니다.



참고 항목
    about_Remote
    Format-Table
    Get-EventLog
    Get-Process
    Get-Service
    Get-WmiObject
    Invoke-Command
    Out-GridView
    Select-Object




목차