Ich habe eine PowerShell-Funktion, mit der ich interaktive Menüs im laufenden Betrieb erstellen kann. Ich übergebe Werte an einen Array-Namen $ mlist und erzeuge dann das Menü basierend auf dem Inhalt des Arrays. Der Benutzer wählt einfach die Nummer aus, die seiner gewünschten Wahl zugeordnet ist. Der Code funktioniert einwandfrei, wenn das Array 9 Elemente oder weniger enthält. Wenn das Array mehr als 9 Elemente enthält, ist die einzige Auswahl, die ich wählen kann, "1". Wenn Sie eine andere Auswahl treffen, wird das Menü erneut angezeigt. Ich habe es in einer while-Anweisung gekapselt und dies ist die gewünschte Funktion, wenn kein Element ausgewählt ist. Im Grunde ignoriert es einen anderen Eintrag als "1", wenn das Array mehr als 9 Elemente enthält. Hier ist der Code:Benutzerauswahlmenü aus einem PowerShell-Array mit mehr als 9 Elementen
$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)
Welche Daten wurden in dem Array enthalten, das in die Funktion übergeben wurde? Ich habe versucht mit sowohl dynamischen als auch statischen Arrays von Strings. –
Ok, also update ... mein Array hat 12 Elemente. Ich kann 1, 10, 11 und 12 wählen, aber nicht 2-9. Mein Array wird erstellt, indem vCenter abgefragt und Hosts ausgewählt werden, die bestimmten Kriterien entsprechen. Also mein Array enthält die Hostnamen von 12 ESXi-Hosts. –