Поделиться через


Read-Host

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

Синтаксис

AsString (по умолчанию)

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

AsSecureString

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. Маскирование входных данных и в виде строки обычного текста

В этом примере строка "Ввод пароля:" отображается в виде запроса. При вводе значения звездочки (*) отображаются на консоли вместо входных данных. При нажатии клавиши ВВОД значение сохраняется в виде открытого текста объекта 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
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

AsSecureString
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-MaskInput

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

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

Свойства параметра

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

AsString
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Prompt

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

Свойства параметра

Тип:Object
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:0
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входные данные

None

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

Выходные данные

String

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

SecureString

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

Примечания

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