Read-Host
Считывает строку ввода из консоли.
Синтаксис
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Описание
Командлет Read-Host
считывает строку входных данных из консоли (stdin). Его можно использовать для запроса ввода данных пользователем. Так как вы можете сохранить входные данные как защищенную строку, этот командлет можно использовать для запроса пользователей на безопасные данные, например пароли.
Примечание
Read-Host
имеет ограничение в 1022 символа, которое может приниматься пользователем в качестве входных данных.
Примеры
Пример 1. Сохранение входных данных консоли в переменной
В этом примере в качестве запроса отображается строка "Пожалуйста, введите свой возраст:". При вводе значения и нажатии клавиши ВВОД значение сохраняется в переменной $Age
.
$Age = Read-Host "Please enter your age"
Пример 2. Сохранение входных данных консоли в виде безопасной строки
В этом примере строка "Введите пароль:" отображается в виде запроса. При вводе значения вместо входных данных на консоли появляются звездочки (*
). При нажатии клавиши ВВОД значение сохраняется в $pwd_secure_string
переменной как объект SecureString.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Пример 3. Маскирование входных данных и в виде строки в виде открытого текста
В этом примере строка "Введите пароль:" отображается в виде запроса. При вводе значения вместо входных данных на консоли появляются звездочки (*
). При нажатии клавиши ВВОД значение сохраняется в переменной в виде объекта 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).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaskInput
Указывает, что командлет отображает звездочки (*
) вместо символов, введенных пользователем в качестве входных данных. При использовании этого параметра выходными данными командлета Read-Host
является объект String .
Это позволяет безопасно запрашивать пароль, который возвращается в виде открытого текста, а не SecureString.
Этот параметр был добавлен в PowerShell 7.1.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prompt
Задает текст запроса. Введите строку. Если строка содержит пробелы, заключите ее в кавычки. PowerShell добавляет двоеточие (:
) к вводу текста.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
Вы не можете передавать объекты в этот командлет.
Выходные данные
По умолчанию этот командлет возвращает строку.
При использовании параметра AsSecureString этот командлет возвращает SecureString.
Примечания
Этот командлет считывает только из потока stdin ведущего процесса. Обычно поток stdin подключается к клавиатуре консоли узла.