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 подключается к клавиатуре хост-консоли.