스크립트를 실행할 때 사용자로부터 입력 값을 받거나 결과 및 데이터의 유효성을 검사해야 하는 경우가 있습니다.
이때 사용할 PowerShell I/O 명령어에 대해 알아보자.
(입력 처리 명령)
읽기 호스트
사용자 입력을 받는 명령은 “Read-Host”입니다.
호스트 읽기(Microsoft.PowerShell.Utility) – PowerShell | 마이크로소프트 런
읽기 호스트(Microsoft.PowerShell.Utility) – PowerShell
Read-Host cmdlet은 콘솔(stdin)에서 입력 라인을 읽습니다. 사용자에게 입력을 요청하는 데 사용할 수 있습니다. 입력을 보안 문자열로 저장할 수 있으므로 이 cmdlet을 사용하여 사용자에게 암호와 같은 보안 데이터를 묻는 메시지를 표시할 수 있습니다. 참고 읽기 호스트 ha
learn.microsoft.com
“Read-Host”를 사용하여 사용자 입력을 수신하고 그대로 출력해 봅시다.
* “Read-Host” 명령의 인수는 사용자 입력을 기다리는 동안 표시할 내용입니다.
PS C:\Users\jaehui.yoon> $temp = Read-Host "Tell me how you feel today"
Tell me how you feel today: Fantastic!
(아웃바운드 처리 명령)
쓰기 호스트
“Write-Host”는 임의의 문자 또는 변수 값을 화면에 인쇄하는 데 사용되는 명령입니다.
쓰기 호스트(Microsoft.PowerShell.Utility) – PowerShell | 마이크로소프트 런
쓰기 호스트(Microsoft.PowerShell.Utility) – PowerShell
Write-Host cmdlet의 주요 목적은 (호스트) 디스플레이 전용 출력을 생성하는 것입니다. B. Read-Host와 함께 사용자에게 입력을 요청하는 경우와 같이 컬러 텍스트 인쇄. Write-Host는 ToString() 메서드를 사용하여 출력을 씁니다. 대조적으로
learn.microsoft.com
PowerShell 개발자 Jeffrey Snover는 Write-Host 사용에 반대합니다.

따라서 변수 값을 확인하거나 명령 결과를 인쇄하는 경우 외에는 사용하지 않는 것이 좋습니다.
위의 “Read-Host”에서 받은 사용자 입력 값(Fantastic!)을 “Write-Host”를 사용하여 출력해 봅시다.
PS C:\Users\jaehui.yoon> Write-Host $temp
Fantastic!
쓰기 출력
명령 처리 결과를 보여주는 명령이 “Write-Output”입니다.
출력 쓰기(Microsoft.PowerShell.Utility) – PowerShell | 마이크로소프트 런
쓰기 출력(Microsoft.PowerShell.Utility) – PowerShell
지정된 개체를 파이프라인에 씁니다. Write-Output이 파이프라인의 마지막 명령인 경우 개체가 콘솔에 표시됩니다. Write-Output은 개체를 “출력 스트림” 또는 “성공 파이프라인”이라고도 하는 기본 파이프라인으로 보냅니다. 에게
learn.microsoft.com
“쓰기 호스트”와 “쓰기 출력”의 차이점
Write-Host는 사용자가 출력 값을 직접 입력해야 하지만 Write-Output은 출력 값이 있는 명령을 사용할 때 파이프라인을 통해 자동으로 적용됩니다. 예를 들어 “Get-Service” 명령을 사용하면 서비스 목록이 자동으로 출력되지만 “Get-Service|Write-Output” 명령은 암시적으로 적용됩니다. 즉, “Get-Service”와 “Get-Service|Write-Output”은 동일한 결과값을 보여준다.
프로세스를 얻다
PS C:\Users\jaehui.yoon> Get-Process
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
228 17 17096 12268 18576 0 agentid-service
프로세스 가져오기 | 쓰기 출력
PS C:\Users\jaehui.yoon> Get-Process | Write-Output
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
228 17 17096 12268 18576 0 agentid-service