(파워쉘)3. 입력 및 출력

스크립트를 실행할 때 사용자로부터 입력 값을 받거나 결과 및 데이터의 유효성을 검사해야 하는 경우가 있습니다.

이때 사용할 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