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. Сохранение входных данных консоли в виде безопасной строки
В этом примере строка "Ввод пароля:" отображается в виде запроса. При вводе значения звездочки (*
) отображаются на консоли вместо входных данных. При нажатии клавиши ВВОД значение сохраняется как объект SecureString в переменной $pwd_secure_string
.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Пример 3. Маскирование входных данных и в виде строки обычного текста
В этом примере строка "Ввод пароля:" отображается в виде запроса. При вводе значения звездочки (*
) отображаются на консоли вместо входных данных. При нажатии клавиши ВВОД значение сохраняется в виде объекта строки с открытым текстом в переменной$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 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-MaskInput
Указывает, что командлет отображает звездочки (*
) вместо символов, которые пользователь вводит в качестве входных данных. При использовании этого параметра выходные данные командлета 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
Невозможно передать объекты в этот командлет.
Выходные данные
По умолчанию этот командлет возвращает строку.
При использовании параметра AsSecureString этот командлет возвращает SecureString.
Примечания
Этот командлет считывается только из потока stdin процесса узла. Обычно поток stdin подключен к клавиатуре консоли узла.
Связанные ссылки
PowerShell