안녕, 지루하고 예측 가능한 스크립트 출력과 작별하세요! PowerShell Write-Output
cmdlet을 사용하면 PowerShell 스크립트에 창의성과 개성을 더할 수 있습니다.
Write-Output
cmdlet은 강력한 도구로, 자동화 및 시스템 관리에 완벽한 동반자입니다. 이 튜토리얼에서는 Write-Output
cmdlet의 잠재력을 최대화하는 방법을 배우게 됩니다.
준비되셨나요? 계속 읽어보고 Write-Output
cmdlet의 마법을 발견하세요!
전제 조건
콘솔에 객체 출력
PowerShell Write-Output
cmdlet은 개체를 출력 스트림에 작성하고 명령 또는 메시지의 출력을 콘솔에 표시합니다. 그러나 이 도구가 출력을 어떻게 더 의미 있고 가치 있게 만들어내는지에 놀라게 될 것입니다.
대신 출력을 콘솔에 표시하는 대신 Write-Output
cmdlet을 사용하여 출력을 사용자 정의하세요. Write-Output
cmdlet은 문자열, 정수, 배열 및 복잡한 객체와 같은 모든 개체 또는 데이터 유형을 출력할 수 있습니다.
콘솔에 Hello, World! 메시지를 출력하려면 아래 명령을 실행하세요.
Write-Output
cmdlet의 가장 기본적인 기능을 아래에서 볼 수 있습니다. 그러나 이 cmdlet의 중간에서 고급 사용법을 더 알아보려면 계속 읽어보세요.<>

객체를 다른 명령에 전달하기
출력을 콘솔에 표시하는 것 외에도 Write-Output
명령을 사용하여 객체를 또 다른 명령으로 보내 추가 처리를 수행할 수 있습니다. 어떻게? 파이프라인 연산자(|
)를 사용합니다. 파이프라인을 사용하면 Write-Output
이 자동화 및 시스템 관리 작업에 유용한 다목적 명령이 됩니다.
자원을 가장 많이 사용하는 프로세스를 확인하려면 CPU와 같은 모든 프로세스의 목록을 가져와야 합니다.
다음 명령을 실행하여 다음을 수행하세요:
- 시스템에서 실행 중인 모든 프로세스 목록(
Get-Process
)을 가져옵니다. - 출력 목록을 파이프라인에 전달하여
Sort-Object
명령에 전달합니다. 파이프라인 연산자를 사용하면 여러 명령을 연결하여 하나의 명령의 출력을 다른 명령의 입력으로 처리할 수 있습니다. - 프로세스 목록을 (
Sort-Object
) 정렬하십시오.CPU
사용량을-Descending
순으로 정렬합니다.
이 자습서의 명령 중 하나를 PowerShell 스크립트로 넣어 실행할 수 있다는 점을 참고하세요.
정렬된 목록이 아래와 같이 콘솔에 표시됩니다.

사용자 지정 형식으로 객체 출력
Write-Output cmdlet의 기본 출력 형식을 본 것입니다. 그러나 필요한 경우 개인적인 터치를 추가하기 위해 사용자 지정 형식으로 객체를 출력할 수도 있습니다. 특정 객체 속성을 표시하거나 출력의 모양을 사용자 지정하는 경우 사용자 지정 형식이 유용할 수 있습니다.
사용자 지정 형식으로 객체를 출력하려면 다음과 같이 Format-Custom
과 Write-Output
cmdlet을 함께 사용하면 됩니다.
사용자 지정 출력 형식을 만들고, 그런 다음 Format-Custom cmdlet의 출력을 Write-Output에 파이프합니다.<>
아래 명령을 실행하면 출력이 생성되지 않지만 출력할 속성과 해당 값이 있는 객체(해시테이블)가 생성됩니다.
이제 다음 명령을 실행하여 다음을 수행하십시오:
- 해시 테이블(
$object
)의 출력(Write-Output
)에 사용자 지정 형식(Format-Table
)을 만듭니다.Property1
,Property2
, 및Property3
속성을 열로 설정합니다. - 컨텐츠에 맞게 열 너비(
-AutoSize
)를 조정하십시오.

또는 Write-Output
으로 객체를 속성-값 쌍의 목록으로 출력하기 위해 Format-List
cmdlet을 사용할 수 있습니다.

단일 Entity로 Collection 객체 전달
Write-Output
은 기본적으로 각 컬렉션 요소를 개별적으로 파이프라인을 통해 보냅니다. 이를 열거라고 합니다. 그러나 전체 컬렉션 개체를 단일 Entity로 전달하도록 -NoEnumerate
매개변수를 추가하여이 동작을 방지할 수 있습니다.
-NoEnumerate
매개변수가 작동하는 방법을 보려면 다음 단계를 따르십시오:
다음 명령을 실행하여 다음을 수행하십시오:
$numbers
의 배열을 선언하십시오. (1,2,3
).
- 파이프라인을 통해 전달된 개체 수(
Measure-Object
)를 계산하십시오. - 출력 객체 측정하기 (
Write-Output $numbers
).
NoEnumerate
매개 변수 없이 Measure-Object
는 각 $numbers
배열 요소를 열거하고 개별적으로 파이프라인을 통해 전달하여 세 개의 카운트를 반환합니다 (3).

이제 다음 명령을 실행하여 파이프라인을 통해 전달된 개체 수를 출력합니다.
그러나 -NoEnumerate
매개 변수를 추가했으므로 Measure-Object
cmdlet은 개체를 단일 엔터티로 처리하여 하나의 카운트를 반환합니다 (1).

Write-Output
명령을 괄호로 둘러싸면 (즉,(Write-Output 1,2,3)
)-NoEnumerate
매개 변수에 관계없이 열거가 강제로 발생합니다.
메뉴 시스템 및 입력 프롬프트 생성
Write-Output
cmdlet의 또 다른 훌륭한 사용 사례는 사용자에게 입력을 요청하는 PowerShell 스크립트를 사용하여 메뉴 시스템을 만드는 것입니다.
선호하는 텍스트/코드 편집기로 .ps1 파일을 만들고 아래 코드를 채워서 파일을 저장합니다. 파일의 이름은 원하는 대로 지정할 수 있지만, 이 튜토리얼의 선택은 myoutput.ps1입니다.
아래 코드는 사용자에게 옵션 목록에서 옵션을 선택하도록 계속해서 프롬프트하는 루프를 사용하며 사용자가 Exit
옵션을 선택할 때까지 계속됩니다.
이제 작업 디렉토리에서 스크립트 (myoutput.ps1
)를 실행합니다.
아래와 같이 선택한 옵션에 연결된 메시지가 표시되며 옵션 1, 2, 또는 3을 선택할 때입니다. 그러나 옵션 4를 선택하면 스크립트가 종료됩니다.

스플래시 화면 또는 환영 메시지 표시
제외하고 사용자가 선택할 수 있는 옵션을 나열하는 것 외에도 Write-Output
을 사용하여 화면 표시기나 환영 메시지를 표시할 수도 있습니다. 화려한 화면 표시기는 스크립트에 전문적이고 정교한 인상을 줍니다.
다음 아래의 코드로 myoutput.ps1 파일 내의 코드를 교체하여 스크립트를 실행할 때 환영 메시지(배너의 스플래시 화면)를 출력합니다.
배너의 텍스트와 포맷을 수정하여 스플래시 화면을 사용자 정의할 수 있습니다. 원하는 대로 로고나 텍스트와 같은 추가 요소를 스플래시 화면에 추가할 수 있습니다.
이제 스크립트를 실행하여 스플래시 화면이 어떻게 보이는지 확인하세요.

진행률 표시줄 표시
스크립트를 실행할 때 진행 표시기는 사용자가 스크립트가 실행되고 있는지 여부에 대한 불안감을 없애줍니다. 진행률 표시줄은 사용자에게 긴 시간 동안 실행되는 스크립트나 작업의 진행 상황을 표시하는 데 유용할 수 있습니다. 다행히도 Write-Output
cmdlet을 사용하여 원하는대로 진행률 표시줄을 만들 수 있습니다.
myoutput.ps1 파일을 열고, 스크립트 파일 내의 기존 코드 아래에 다음 코드를 추가합니다.
아래 코드는 while
루프를 사용하여 여러 단계를 반복합니다. 이 예제에서는 100단계입니다. 루프의 각 반복은 완료된 단계의 백분율을 계산하고 Write-Output
을 사용하여 진행률 표시줄을 표시합니다.
진행률 표시줄은 다음 연산자의 조합을 사용하여 생성됩니다:
*
– 지정된 횟수만큼 문자열을 반복합니다$()
– 표현식의 출력을 문자열에 포함시킵니다.
스크립트는 다음 단계로 넘어가기 전에 진행을 시뮬레이트하기 위해 (Start-Sleep
) 1
초 동안 일시 정지합니다.
이제 스크립트를 실행하고 진행률 바가 어떻게 작동하는지 확인해보세요.
아래에서 스플래시 화면과 함께 진행률 바를 볼 수 있습니다.

결론
이 튜토리얼에서는 Write-Output
이 어떻게 객체, 데이터 유형, 그리고 사용자 정의 형식을 쉽게 출력할 수 있는지 보았습니다. 게다가, 파이프라인 연산자를 사용하여 출력을 다른 명령으로 보내 추가 처리를 할 수 있는 방법에 대해 알아보았습니다.
단순한 메시지 출력이나 복잡한 자동화 작업을 작성하든, Write-Output
은 더 많은 정보를 담은 전문적인 PowerShell 스크립트를 만들기 위해 꼭 필요한 도구입니다.
이 새로운 지식을 활용하여, 왜 .txt와 .xml 파일과 같은 다른 파일 형식으로 출력을 작성하지 않을까요? 목적에 관계없이, 출력 복사본은 시스템이나 애플리케이션의 문제 해결에 유용합니다. Write-Output
과 Out-File
cmdlet은 당신이 필요로 한 힘을 부여해 줍니다.
Source:
https://adamtheautomator.com/powershell-write-output/