Запрос на ввод пользователя в PowerShell



Answers

Использование привязки параметров - определенно путь сюда. Это не только очень быстро писать (просто добавьте [Parameter(Mandatory=$true)] над вашими обязательными параметрами), но это также единственный вариант, который вы не будете ненавидеть позже.

Еще ниже:

[Console]::ReadLine явно запрещена правилами FxCop для PowerShell. Зачем? Потому что он работает только в PowerShell.exe, а не в PowerShell ISE , PowerGUI и т. Д.

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

Вы пытаетесь задать параметры.

Вы должны использовать атрибут [Parameter(Mandatory=$true)] и правильно ввести текст, чтобы запросить параметры.

Если вы используете это в [SecureString] , он предложит ввести пароль. Если вы используете это в типе Credential, ( [Management.Automation.PSCredential] ), откроется диалоговое окно учетных данных, если параметр отсутствует. Строка станет просто старым текстовым полем. Если вы добавите HelpMessage в атрибут параметра (то есть [Parameter(Mandatory = $true, HelpMessage = 'New User Credentials')] ), то он станет справочным текстом для подсказки.

Question

Я хочу предложить пользователю ввести несколько входов, включая пароль и имя файла.

У меня есть пример использования host.ui.prompt , который кажется разумным, но я не могу понять возвращение.

Есть ли лучший способ получить пользовательский ввод в PowerShell?




В качестве альтернативы вы можете добавить его как параметр сценария для ввода как часть выполнения сценария

 param(
      [Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $value1,
      [Parameter(Mandatory = $True,valueFromPipeline=$true)][String] $value2
      )



Links



Tags

powershell