使用PowerShell显示用户输入

时间:2017-07-26 18:51:35

标签: powershell powershell-v2.0

说我有一个数组

a = ['hello', 'world', '1', '2', 'other', 'thing']
c = dict(zip(a, a))

如何以

的形式向用户显示
$something = @(
"first",
"second"
)

我可以通过哈希表和手动映射

来完成此操作
1. first
2. second
Selection : 

并执行以下操作

@{
1="first"
2="second"
};

但是如果需要使用数组执行此操作,我该怎么做呢。即循环该项目并显示索引以供用户选择。 ?

2 个答案:

答案 0 :(得分:1)

您可以使用IndexOf()方法查找数组中的索引。

$something | ForEach-Object {Write-Host "$([Array]::IndexOf($something, $_)). $_ "}

关于小心Write-Host的标准警告。您也可以查看Out-GridView

答案 1 :(得分:1)

使用for循环迭代数组的元素,并在索引+ 1前面加上每个值。

$something = 'first', 'second'

for ($i = 0; $i -lt $something.Count; $i++) {
    Write-Host ('{0}. {1}' -f ($i+1), $something[$i])
}
[int32]$constuctPayload.Action = Read-Host -Prompt 'Selection'

我建议使用PromptForChoice()方法而不是Read-Host

$something = '&first', '&second'

$title   = 'The title.'
$msg     = 'Selection?'
$choices = $something | ForEach-Object {
    New-Object Management.Automation.Host.ChoiceDescription $_
}
$options = [Management.Automation.Host.ChoiceDescription[]] $choices
$default = 0

$constuctPayload.Action = $Host.UI.PromptForChoice($title, $msg, $options, $default)