PowerShell은 데이터 출력을 직접 제어할 수 있는 몇 가지 cmdlet을 제공합니다. 이러한 cmdlet은 두 가지 중요한 특성을 공유합니다.
첫째, 일반적으로 데이터를 텍스트 형식으로 변환합니다. 텍스트 입력이 필요한 시스템 구성 요소에 데이터를 출력하기 때문에 이 작업을 수행합니다. 즉, 개체를 텍스트로 나타내야 합니다. 따라서 텍스트는 PowerShell 콘솔 창에 표시되는 대로 서식이 지정됩니다.
둘째, 이러한 cmdlet은 PowerShell에서 다른 곳으로 정보를 보내기 때문에 PowerShell 동사 Out 을 사용합니다.
콘솔 출력
기본적으로 PowerShell은 cmdlet이 수행하는 것과 정확히 일치하는 호스트 창으로 Out-Host
데이터를 보냅니다. cmdlet의 Out-Host
기본 용도는 페이징입니다. 예를 들어, 다음 명령은 Out-Host
을 사용하여 cmdlet의 Get-Command
출력을 페이지로 나눕니다.
Get-Command | Out-Host -Paging
호스트 창 표시가 PowerShell 외부에 있습니다. PowerShell에서 데이터를 보낼 때 실제로 제거되기 때문에 중요합니다. 다음과 같이 데이터를 호스트 창에 페이지로 표시하는 파이프라인을 만든 다음 목록으로 서식을 지정하려고 하면 이를 확인할 수 있습니다.
Get-Process | Out-Host -Paging | Format-List
명령에서 프로세스 정보의 페이지를 목록 형식으로 표시할 수 있습니다. 대신 기본 테이블 형식 목록이 표시됩니다.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
101 5 1076 3316 32 0.05 2888 alg
...
618 18 39348 51108 143 211.20 740 explorer
257 8 9752 16828 79 3.02 2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...
cmdlet은 Out-Host
데이터를 콘솔로 직접 보내므로 Format-List
명령은 형식을 지정할 아무 것도 수신하지 않습니다.
이 명령을 구성하는 올바른 방법은 아래와 같이 cmdlet을 파이프라인의 끝에 배치 Out-Host
하는 것입니다. 이렇게 하면 프로세스 데이터가 페이징되고 표시되기 전에 목록에 서식이 지정됩니다.
Get-Process | Format-List | Out-Host -Paging
Id : 2888
Handles : 101
CPU : 0.046875
Name : alg
...
Id : 740
Handles : 612
CPU : 211.703125
Name : explorer
Id : 2560
Handles : 257
CPU : 3.015625
Name : explorer
...
<SPACE> next page; <CR> next line; Q quit
...
이는 모든 Out cmdlet에 적용됩니다. Out cmdlet은 항상 파이프라인의 끝에 표시됩니다.
비고
모든 Out cmdlet은 줄 길이 제한을 포함하여 콘솔 창에 적용되는 서식을 사용하여 출력을 텍스트로 렌더링합니다.
출력 삭제
cmdlet Out-Null
은 수신하는 입력을 즉시 삭제하도록 설계되었습니다. 이는 명령 실행의 부작용으로 얻을 수 있는 불필요한 데이터를 삭제하는 데 유용합니다. 다음 명령을 입력하면 명령에서 아무것도 다시 가져올 수 없습니다.
Get-Command | Out-Null
cmdlet은 Out-Null
오류 출력을 삭제하지 않습니다. 예를 들어 다음 명령을 입력하면 PowerShell에서 인식하지 Is-NotACommand
못한다는 메시지가 표시됩니다.
PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command <<<< Is-NotACommand | Out-Null
데이터 인쇄
Out-Printer
Windows 플랫폼에서만 사용할 수 있습니다.
Out-Printer
cmdlet을 사용하여 데이터를 인쇄할 수 있습니다.
Out-Printer
프린터 이름을 제공하지 않으면 cmdlet에서 기본 프린터를 사용합니다. 표시 이름을 지정하여 Windows 기반 프린터를 사용할 수 있습니다. 어떤 종류의 프린터 포트 매핑이나 실제 물리적 프린터도 필요하지 않습니다.
예를 들어 Microsoft Office 문서 이미징 도구가 설치된 경우 다음을 입력하여 이미지 파일로 데이터를 보낼 수 있습니다.
Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'
데이터 저장
cmdlet을 사용하여 출력 결과를 콘솔 창 대신 파일에 Out-File
보낼 수 있습니다. 다음 명령줄은 프로세스 목록을 파일 C:\temp\processlist.txt
로 보냅니다.
Get-Process | Out-File -FilePath C:\temp\processlist.txt
Out-File
cmdlet을 사용한 결과는 기존 출력 리디렉션에 익숙한 경우 예상과 다를 수 있습니다. 해당 동작을 이해하려면 cmdlet이 작동하는 컨텍스트를 Out-File
알고 있어야 합니다.
Window PowerShell 5.1에서 cmdlet은 Out-File
유니코드 파일을 만듭니다. ASCII 파일이 예상되는 일부 도구는 기본 출력 형식으로 제대로 작동하지 않습니다.
인코딩 매개 변수를 사용하여 기본 출력 형식을 ASCII로 변경할 수 있습니다.
Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ascii
Out-File
은 파일 내용을 콘솔 출력처럼 보이도록 서식을 지정합니다. 이렇게 하면 대부분의 경우 콘솔 창에 있는 것처럼 출력이 잘립니다. 예를 들어 다음 명령을 실행하는 경우
Get-Command | Out-File -FilePath C:\temp\output.txt
출력은 다음과 같이 표시됩니다.
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-Content Add-Content [-Path] <String[...
Cmdlet Add-History Add-History [[-InputObject] ...
...
줄 바꿈이 화면 너비와 일치하도록 강제하지 않는 출력을 얻으려면 Width 매개 변수를 사용하여 선 너비를 지정할 수 있습니다. Width는 32비트 정수 매개 변수이므로 가질 수 있는 최대값은 2147483647. 줄 너비를 이 최대값으로 설정하려면 다음을 입력합니다.
Get-Command | Out-File -FilePath C:\temp\output.txt -Width 2147483647
이 Out-File
cmdlet은 콘솔에 표시된 대로 출력을 저장하려는 경우에 가장 유용합니다.
PowerShell