다음을 통해 공유


Read-Host

콘솔에서 입력 줄을 읽습니다.

구문

Read-Host
    [[-Prompt] <Object>]
    [-MaskInput]
    [<CommonParameters>]
Read-Host
    [[-Prompt] <Object>]
    [-AsSecureString]
    [<CommonParameters>]

Description

cmdlet은 Read-Host 콘솔(stdin)에서 입력 줄을 읽습니다. 이를 사용하여 사용자에게 입력을 요청하는 메시지를 표시할 수 있습니다. 입력을 보안 문자열로 저장할 수 있으므로 이 cmdlet을 사용하여 사용자에게 암호와 같은 보안 데이터를 묻는 메시지를 표시할 수 있습니다.

참고 항목

Read-Host 에는 사용자의 입력으로 허용할 수 있는 1022자의 제한이 있습니다.

예제

예제 1: 변수에 콘솔 입력 저장

다음은 "나이 입력하세요."라는 문자열을 프롬프트로 표시하는 예제입니다. 값을 입력하고 Enter 키를 누르면 값이 변수에 $Age 저장됩니다.

$Age = Read-Host "Please enter your age"

예제 2: 콘솔 입력을 보안 문자열로 저장

다음은 "암호 입력:" 문자열을 프롬프트로 표시하는 예제입니다. 값을 입력할 때 입력 대신 별표(*)가 콘솔에 표시됩니다. Enter 키를 누르면 값이 변수에 SecureString 개체 $pwd_secure_string 로 저장됩니다.

$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString

예제 3: 마스크 입력 및 일반 텍스트 문자열

다음은 "암호 입력:" 문자열을 프롬프트로 표시하는 예제입니다. 값을 입력할 때 입력 대신 별표(*)가 콘솔에 표시됩니다. Enter 키를 누르면 값이 변수에 일반 텍스트 String 개체 $pwd_string 로 저장됩니다.

$pwd_string = Read-Host "Enter a Password" -MaskInput

예제 4: 입력 정규화

다음은 세미콜론으로 구분된 도시 목록을 입력하라는 메시지를 표시하는 예제입니다. 사용자가 입력한 문자열의 값을 표시합니다. 이 예제에서 사용자는 일부 항목 사이에 공백을 추가했습니다. 이로 인해 코드에서 정확한 이름이 예상되는 스크립트의 뒷부분에서 오류가 발생할 수 있습니다.

이 예제에서는 추가 공백 없이 입력 문자열을 항목 배열로 변환하는 방법을 보여줍니다.

$prompt = @(
    'List the cities you want weather information for.'
    'When specifying multiple cities, separate them with a semi-colon, like:'
    "'New York; Osan; Koforidua'"
) -join ' '

$cities = Read-Host $prompt

"Input cities string: `n`t'$cities'"

$splitCities = $cities -split ';'

"Split cities array:"
$splitCities | ForEach-Object -Process { "`t'$_'" }

$normalizedCities = $splitCities  | ForEach-Object -Process { $_.Trim() }

"Normalized split cities array:"
$normalizedCities | ForEach-Object -Process { "`t'$_'" }

Input cities string:
        '    New York;  Osan   ;Koforidua   '
Split cities array:
        '    New York'
        '  Osan   '
        'Koforidua   '
Normalized split cities array:
        'New York'
        'Osan'
        'Koforidua'

이 예제에서는 연산자를 -split 사용하여 입력 문자열을 문자열 배열로 변환합니다. 배열의 각 문자열에는 다른 도시의 이름이 포함됩니다. 그러나 분할 문자열에는 추가 공백이 포함됩니다. 메서드는 Trim() 각 문자열에서 선행 및 후행 공백을 제거합니다.

매개 변수

-AsSecureString

사용자가 입력으로 입력하는 문자 대신 별표(*)가 cmdlet에 표시됨을 나타냅니다. 이 매개 변수를 사용하는 경우 cmdlet의 Read-Host 출력은 SecureString 개체(System.Security.SecureString)입니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-MaskInput

사용자가 입력으로 입력하는 문자 대신 별표(*)가 cmdlet에 표시됨을 나타냅니다. 이 매개 변수를 사용하는 경우 cmdlet의 Read-Host 출력은 String 개체입니다. 이를 통해 SecureString 대신 일반 텍스트로 반환되는 암호를 안전하게 확인할 수 있습니다.

이 매개 변수는 PowerShell 7.1에 추가되었습니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Prompt

프롬프트의 텍스트를 지정합니다. 문자열을 입력합니다. 문자열에 공백이 포함되어 있으면 따옴표로 묶습니다. PowerShell은 입력한 텍스트에 콜론(:)을 추가합니다.

형식:Object
Position:0
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

None

개체를 이 cmdlet으로 파이프할 수 없습니다.

출력

String

기본적으로 이 cmdlet은 문자열을 반환합니다.

SecureString

AsSecureString 매개 변수를 사용하는 경우 이 cmdlet은 SecureString을 반환합니다.

참고

이 cmdlet은 호스트 프로세스의 stdin 스트림에서만 읽습니다. 일반적으로 stdin 스트림은 호스트 콘솔의 키보드에 연결됩니다.