Read-Host를 사용한 대화형 PowerShell 스크립트: 완벽한 가이드

Read-Host PowerShell cmdlet을 사용하면 스크립트 사용자에게 대화식으로 입력을 요청할 수 있습니다. Read-Host PowerShell cmdlet을 사용하는 실제 응용 프로그램을 살펴보겠습니다.

Read-Host를 사용하여 입력 요청

Read-Host cmdlet은 PowerShell 스크립트에서 두 가지 기능을 수행합니다. 실행을 일시 중단하고 입력을 받습니다. 그게 다입니다. Read-Host는 간단한 cmdlet이지만 스크립트 사용자로부터 정보를 얻어야 할 때 유용합니다.

가장 기본적인 형태로는 Read-Host cmdlet은 단순히 Prompt 매개변수를 사용하는 것만 필요합니다. 이 Prompt 매개변수를 사용하면 스크립트 사용자에게 입력할 내용에 대한 알림을 제공할 수 있습니다. 예를 들어, 스크립트에서 서버 이름이 필요한 경우 스크립트를 실행할 때 사용자에게 입력을 요청하기 위해 Read-Host를 사용할 수 있습니다.

아래에서는 PowerShell 콘솔 자체에서 Prompt 매개변수를 사용하여 Read-Host를 실행함으로써 PowerShell이 모든 실행을 중지하고 사용자에게 우리가 필요한 내용에 대한 설명 메시지를 표시하는 것을 볼 수 있습니다.

Read-Host PowerShell prompt

이것을 스크립트에 통합해 봅시다. 사용자가 프롬프트에서 정보를 입력할 때마다 Read-Host는 해당 정보를 코드로 반환합니다. 출력을 변수에 할당함으로써이 정보를 쉽게 캡처할 수 있습니다. 서버 이름을 요청하고 해당 서버 이름으로 작업을 수행하고 싶을 수도 있습니다. 그렇지 않으면 사용자에게 서버 이름이 정말로 필요하다는 경고를 보내고 싶을 수도 있습니다.

$serverName = Read-Host -Prompt 'Server name to process'
if ($serverName) {
    Write-Host "We can now use the server name [$serverName] in our code"
} else {
    Write-Warning -Message "No server name input."
}

간단한 if/then 구조를 사용하여 사용자가 서버 이름을 입력하도록 보장할 수 있습니다. 그들이 입력하면 캡처하여 다른 작업을 수행하거나 그렇지 않으면 경고 메시지를 보낼 수 있습니다.

Warning when no input

비밀번호 요청

비밀번호를 스크립트에서 평문으로 저장하는 것은 좋은 아이디어가 아닙니다. 마찬가지로, 메모리에 평문으로 비밀번호를 저장하는 것도 좋지 않습니다. 이를 해결하기 위해 PowerShell에는 암호화된 간단한 문자열인 보안 문자열(Secure String)이라는 개념이 있습니다.

A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host? The Read-Host cmdlet has an AsSecureString parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!

아무도 알아서는 안 되는 깊고 어두운 비밀이 있지만 이 비밀을 어떤 소프트웨어에 전달해야 할 필요가 있을 때, 아래에서 확인할 수 있듯이 AsSecureString을 사용하지 않으면 다른 사람이 내 비밀을 알아차립니다! 그러나 AsSecureString을 사용하면 내 비밀은 안전하게 유지되며, 입력한 각 문자가 별표로 대체되고 출력은 평문 문자열 대신 보안 문자열로 저장됩니다.

Accepting secure input with Read-Host

Read-Host 문서를 참조하려면 Microsoft Docs를 확인하십시오.

Source:
https://adamtheautomator.com/read-host/