Я нахожусь в процессе написания CLI для того, над чем я работаю, и в разные моменты процесса я хочу попросить пользователя ввести.Каждый раз, когда я спрашиваю пользователя о вводе, вопросы / ответы, вероятно, будут отличаться, поэтому я начал с чего-то вроде:
$choices = [Management.Automation.Host.ChoiceDescription[]] @(
New-Object Management.Automation.Host.ChoiceDescription("&Yes","Option Description for Yes")
New-Object Management.Automation.Host.ChoiceDescription("&No","Option Description for No.")
)
$choice = $Host.UI.PromptForChoice("Question Title","Question Text",$choices,1)
Это работает довольно хорошо, но это немного неуклюже, когда дело доходит до- особенно, если количество вариантов увеличивается.
Я хочу обернуть его в функцию, которую я могу вызвать проще - например:
$options = @{
Yes = "Option Description for Yes"
No = "Option Description for No"
}
askQuestion -title "Question Title" -question "Question Text" -options $options
Пока все хорошо.Бит, с которым я борюсь, - это доступ к свойствам $ options:
function askQuestion {
param (
[hashtable]$options,
[string]$title,
[string]$question
)
Write-Host $title -ForegroundColor Cyan
Write-Host $question -ForegroundColor Cyan
foreach($option in $options)
{
# Do stuff HERE
}
}
Если я просто получаю доступ к $option
непосредственно в foreach, он выводит таблицу, например:
Name Value
---- -----
No Option Description for No
Yes Option Description for Yes
Если я попытаюсь получить доступ к $option.Name
или .Value, то это, похоже, ничего не делает.
Может кто-нибудь указать, где я не так с этим, пожалуйста?