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

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

Запрос паролей
Вы должны знать, что хранить пароли в открытом виде в ваших скриптах – это не лучшая идея. Точно так же плохо хранить пароли в открытом виде в памяти. Для обхода этой проблемы в PowerShell существует концепция secure string, который представляет собой простую строку, зашифрованную.
A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host
? The Read-Host
cmdlet has an AsSecureString
parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!
Предположим, у меня есть глубокий секрет, который я не хочу, чтобы кто-то узнал, но мне нужно передать этот пароль какому-то программному обеспечению. Как видно ниже, когда я не использую AsSecureString
, вы меня раскрываете! Однако, если я использую AsSecureString
, мой секрет в безопасности, так как каждый введенный мной символ заменяется звездочкой, и вывод сохраняется как зашифрованная строка, а не строка в открытом виде.

Чтобы ознакомиться с документацией по Read-Host
, посетите Microsoft Docs.