我有一个PowerShell功能,用于在运行中生成交互式菜单。我将值传递给一个数组名称$ mlist,然后根据数组的内容生成菜单。用户只需选择与他们想要的选择相关的号码。当数组包含9个或更少的项目时,代码工作正常。如果数组包含9个以上的项目,我可以选择的唯一选择是“1”。再次显示菜单中的任何其他选择结果。我把它封装在一个while语句中,当没有选择项目时,这是所需的功能。所以基本上,当数组包含超过9个项目时,它会忽略除“1”之外的任何条目。下面是代码:PowerShell阵列中有9个以上项目的用户选择菜单
$global:ans = $null
$global:selection = $null
While ($ans -lt 1 -or $ans -gt $mlist.count){
$mhead
Write-Host # empty line
$menu = @{}
for ($i=1;$i -le $mlist.count;$i++) {
if ($mlist.count -gt 1){
Write-Host -fore Cyan " $i." $($mlist[$i-1])
$menu.Add($i,($mlist[$i-1]))
}else{
Write-Host -fore Cyan " $i." $mlist
$menu.Add($i,$mlist)
}
}
Write-Host # empty line
$global:ans = Read-Host 'Please enter selection'
}
$global:selection = $menu.Item([int]$ans)
传递给函数的数组中包含的数据是什么?我曾尝试使用动态和静态字符串数组。 –
好的,所以更新...我的数组有12个项目。我可以选择1,10,11和12但不是2-9。我的阵列是通过查询vCenter并选择符合特定条件的主机来构建的。所以我的阵列包含12个ESXi主机的主机名。 –