Поиск по сайту:

Read-Host (Microsoft.PowerShell.Utility)


Read-Host

Модуль:
Microsoft.PowerShell.Utility

Считывает строку ввода с консоли.

Синтаксис

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

Описание

Командлет Read-Host считывает строку ввода с консоли (стандартный ввод). Вы можете использовать его, чтобы предложить пользователю ввести данные. Поскольку вы можете сохранить входные данные в виде защищенной строки, вы можете использовать этот командлет, чтобы запрашивать у пользователей защищенные данные, например пароли.

Примечание

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

Указывает, что командлет отображает звездочки (*) вместо символов, которые пользователь вводит в качестве входных данных. При использовании этого параметра выходные данные командлета Read-Host представляют собой объект SecureString (System.Security.SecureString).

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-MaskInput

Указывает, что командлет отображает звездочки (*) вместо символов, которые пользователь вводит в качестве входных данных. При использовании этого параметра выходные данные командлета Read-Host представляют собой объект String. Это позволяет безопасно запрашивать пароль, который возвращается в виде открытого текста вместо SecureString.

Этот параметр был добавлен в PowerShell 7.1.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Prompt

Указывает текст приглашения. Введите строку. Если строка содержит пробелы, заключите ее в кавычки. PowerShell добавляет двоеточие (:) к введенному вами тексту.

Тип :

Объект

Позиция:

0

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

Нет

Вы не можете передавать объекты в этот командлет.

Выходы

Строка

По умолчанию этот командлет возвращает строку.

SecureString

Если вы используете параметр AsSecureString, этот командлет возвращает SecureString.

Примечания

Этот командлет читает только поток stdin хост-процесса. Обычно поток stdin подключается к клавиатуре хост-консоли.