about_Remote_Output

간단한 설명

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

자세한 설명

원격 컴퓨터에서 실행된 명령의 출력은 로컬 컴퓨터에서 실행되는 동일한 명령의 출력처럼 보일 수 있지만 몇 가지 중요한 차이점이 있습니다.

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

컴퓨터 이름 표시

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

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

Invoke-Command -ScriptBlock {Get-Culture} -ComputerName Server01, Server02
LCID  Name    DisplayName                PSComputerName
----  ----    -----------                --------------
1033  en-US   English (United States)    Server01
1033  es-AR   Spanish (Argentina)        Server02

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

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

$invokeCommandSplat = @{
    ScriptBlock = {Get-Culture}
    ComputerName = 'Server01'
    HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

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

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

$invokeCommandSplat = @{
    ScriptBlock = {Get-Date}
    ComputerName = 'Server01', 'Server02'
}
Invoke-Command @invokeCommandSplat |
    Format-Table DateTime, PSComputerName -AutoSize
DateTime                            PSComputerName
--------                            --------------
Monday, July 21, 2008 7:16:58 PM    Server01
Monday, July 21, 2008 7:16:58 PM    Server02

역직렬화된 개체

출력을 생성하는 원격 명령을 실행하면 명령 출력이 네트워크를 통해 로컬 컴퓨터로 다시 전송됩니다.

라이브 .NET 개체는 네트워크를 통해 전송할 수 없으므로 라이브 개체는 직렬화되거나 개체 및 해당 속성의 XML 표현으로 변환됩니다. PowerShell은 네트워크를 통해 직렬화된 개체를 전송합니다.

로컬 컴퓨터에서 PowerShell은 직렬화된 개체를 수신하고 직렬화된 개체를 표준 .NET 개체로 변환하여 역직렬화 합니다.

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

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

개체의 서식이 자동으로 지정되지 않으면 형식 지정 cmdlet(예: Format-Table 또는 Format-List)을 사용하여 선택한 속성의 서식을 지정하고 표시할 수 있습니다. 또는 cmdlet을 Out-GridView 사용하여 테이블에 개체를 표시할 수 있습니다.

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

DirectoryInfo 개체 및 GUID와 같은 일부 개체 형식은 수신 시 라이브 개체로 다시 변환됩니다. 이러한 개체에는 특별한 처리 또는 서식이 필요하지 않습니다.

결과 순서 지정

cmdlet의 ComputerName 매개 변수에 있는 컴퓨터 이름의 순서는 PowerShell이 원격 컴퓨터에 연결하는 순서를 결정합니다. 그러나 결과는 원격 컴퓨터에서 데이터를 받는 순서대로 표시됩니다.

cmdlet을 Sort-Object 사용하여 PSComputerName에서 결과를 정렬할 수 있습니다. 개체의 다른 속성이 있으면 다른 컴퓨터의 결과가 출력에 인터리브됩니다.

참고 항목