使用 powershell 显示用户输入
Displaying user inputs with powershell
假设我有一个数组
$something = @(
"first",
"second"
)
如何向用户显示
1. first
2. second
Selection :
我可以通过哈希 table 和手动映射
来做到这一点
@{
1="first"
2="second"
};
并执行以下操作
$something.Keys | sort |% { Write-Host $_ ")" $something.Item($_) }
[int32]$constuctPayload.Action = Read-Host
但如果需要使用数组执行此操作,我该怎么做。即循环项目并显示索引以供用户选择。 ?
您可以使用 IndexOf()
方法来查找数组中的索引。
$something | ForEach-Object {Write-Host "$([Array]::IndexOf($something, $_)). $_ "}
关于小心 Write-Host
的标准警告。您也可能想查看 Out-GridView
。
使用 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)
假设我有一个数组
$something = @(
"first",
"second"
)
如何向用户显示
1. first
2. second
Selection :
我可以通过哈希 table 和手动映射
来做到这一点@{
1="first"
2="second"
};
并执行以下操作
$something.Keys | sort |% { Write-Host $_ ")" $something.Item($_) }
[int32]$constuctPayload.Action = Read-Host
但如果需要使用数组执行此操作,我该怎么做。即循环项目并显示索引以供用户选择。 ?
您可以使用 IndexOf()
方法来查找数组中的索引。
$something | ForEach-Object {Write-Host "$([Array]::IndexOf($something, $_)). $_ "}
关于小心 Write-Host
的标准警告。您也可能想查看 Out-GridView
。
使用 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)