항목 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