PowerShell: как запрашивать ввод данных пользователем с помощью командлета Read-Host

Опубликовано: 14 Марта, 2023
PowerShell: как запрашивать ввод данных пользователем с помощью командлета Read-Host

Интерактивные приложения очень эффективны, поскольку они поддерживают интерес пользователей к вашей программе. Эти приложения также могут предоставлять пользователям настраиваемые результаты. Активное взаимодействие с вашими клиентами в режиме реального времени также может повысить их доверие к вашей компании, и, что более важно, вы можете наладить с ними долгосрочные отношения. Учитывая эти многочисленные преимущества, вам следует развертывать интерактивные приложения там, где это возможно. Большинство языков программирования и сценариев, в том числе популярный командлет PowerShell Read-Host, позволяют легко запрашивать у пользователей вводимые данные и соответствующим образом отображать информацию.

В этой статье я покажу вам, как запрашивать у пользователей ввод данных в PowerShell с помощью командлета Read-Host.

Что такое командлет Read-Host?

Командлет Read-Host — это встроенная команда PowerShell, которая запрашивает вводимые пользователем данные и собирает ответы. Как видите, это мощный командлет, так как он имеет двойное назначение: подсказки и сбор информации. Что еще более важно, командлет Read-Host сохраняет собранные значения в виде защищенной строки, что означает, что вы также можете использовать его для сбора конфиденциальной информации, такой как пароли.

Однако обратите внимание, что командлет Read-Host может принимать от пользователей не более 1022 символов. Этого достаточно для простых подсказок, таких как пароли, имена и адреса, но не так полезно для большие отклики.

Давайте теперь посмотрим на синтаксис и различные параметры, которые вы можете использовать в этом командлете.

Синтаксис командлета Read-Host

Вы можете использовать следующий синтаксис командлета

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

Или же

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

Оба синтаксиса работают для командлета Read-Host. Ключевое отличие заключается во втором параметре. И « MaskInput », и « AsSecureString » маскируют ввод, поэтому вы увидите только набор символов звездочки вместо фактической строки. Однако в первом случае пользовательский ввод сохраняется в виде строки, а во втором — в виде объекта SecureString.

Не менее важно, что параметр « Подсказка » — это ваш текст подсказки: это вопрос, на который вы хотите, чтобы ваши пользователи ответили.

Теперь, когда вы имеете представление о параметрах командлета, давайте рассмотрим несколько примеров.

Примеры запроса ввода данных пользователем

Вы можете делать массу вещей с помощью командлета Read-Host. В частности, вы можете задавать много вопросов и обрабатывать ответы разными способами:

Сохраните входные данные в переменную

Для начала самый простой вариант использования — сохранить входные данные в переменной. См. следующий код для подсказки «Пожалуйста, введите ваше имя».

Изображение 29

Пользователь может ввести значение, и это значение будет сохранено в переменной «Имя».

Запрашивать пароль

Когда вы запрашиваете пароль, убедитесь, что вы видите несколько звездочек после того, как пользователь закончит вводить свою информацию. Вам также следует использовать параметр « AsSecureString », если вы хотите сохранить пароль как объект SecureString.

На следующих изображениях показан код запроса на ввод пароля и сохранения ответа в виде SecureString.

Изображение 1433

Используйте несколько значений в качестве входных данных

Наконец, вы можете использовать командлет Read-Host для получения нескольких входных данных от пользователей. Проверьте команды на следующем изображении.

Изображение 4089

Вы также можете передать эти входные данные в другую программу для дальнейшей обработки. Вы можете многое сделать с помощью командлетов и сценариев PowerShell в целом, в зависимости от того, что вы хотите получить от пользователей и как вы хотите обработать эту информацию.

Я надеюсь, что это дает представление об истинных возможностях PowerShell.

Нижняя линия

В заключение интерактивные приложения предлагают множество преимуществ для вашей организации. В то же время создание таких приложений не должно быть трудоемким, особенно в PowerShell. В этой статье я рассказал о командлете Read-Host и о том, как вы можете использовать его для сбора информации от ваших пользователей. На основе этой информации вы можете предоставить необходимые сведения или дальнейшие шаги. Вы даже можете безопасно хранить эту информацию или использовать ее для дальнейшей обработки. Наконец, я показал вам несколько примеров выше, и я надеюсь, что они помогли.

У вас есть вопросы о запросе ввода данных пользователем в PowerShell? Ознакомьтесь с разделами часто задаваемых вопросов и ресурсов ниже!

Часто задаваемые вопросы

Что такое командлеты в PowerShell?

Командлет — это предварительно созданный сценарий, который выполняет определенную функцию в PowerShell. Это упрощенная команда, которую вызывает среда выполнения PowerShell. Он выполняет многие общие функции, которые нам нужны, такие как запрос пользователей на ввод данных, изменение каталогов и т. д. Эти командлеты помогают вам сэкономить время и силы при написании сценариев для часто используемых действий.

Являются ли функции и командлеты одинаковыми?

Нет, функции и командлеты — это две разные вещи в PowerShell, хотя они могут показаться похожими. Основное отличие состоит в том, что вы используете скомпилированный.NET для написания командлетов и язык сценариев PowerShell для написания функций.

Может ли командлет Read-Host принимать входные данные из конвейера PowerShell?

Нет, командлет Read-Host не может принимать входные данные из конвейера PowerShell. Он принимает значения только от пользователей. Однако вы можете сохранить их в переменной или даже передать другим функциям или сценариям для дополнительной обработки.

Будет ли командлет Read-Host принимать значения через несколько устройств ввода?

Нет, командлет Read-Host подключен к процессу.stdin хоста. Это означает, что он может вводить данные только с клавиатуры хост-консоли. Он не может принимать входные данные от других устройств ввода.

Могу ли я использовать параметры «AsSecureString» и «MaskInput» взаимозаменяемо?

Параметр « AsSecureString » сохраняет введенные пользователем значения в виде объекта SecureString. Параметры « MaskInput » сохраняют входные значения как обычный объект String. Эта разница имеет значение только при сборе и хранении конфиденциальной информации, например паролей. Во всех остальных случаях вы можете использовать их взаимозаменяемо.