Forum Discussion

RedModSK's avatar
RedModSK
Copper Contributor
Jun 19, 2023

PromptForChoice menu not working in vertical mode.

Hello, i seek the wisdom of the community again.
I have a script with few options in a menu and it works fine this way:

 

$option1 = New-Object System.Management.Automation.Host.ChoiceDescription "&Status", "Show the current Status"
$option2 = New-Object System.Management.Automation.Host.ChoiceDescription "&Disable", "Disabled actions."
$option3 = New-Object System.Management.Automation.Host.ChoiceDescription "S&tart", "Start actios."
$option4 = New-Object System.Management.Automation.Host.ChoiceDescription "&Enable", "Enable actions."
$option5 = New-Object System.Management.Automation.Host.ChoiceDescription "&Clean", "Cleanup actions ."
$option6 = New-Object System.Management.Automation.Host.ChoiceDescription "E&xit","Exit the script."
$options = [System.Management.Automation.Host.ChoiceDescription[]]($option1, $option2, $option3, $option4, $option5, $option6)
$decision = $Host.UI.PromptForChoice($title, $question, $options, 0)

 

I have now more options with longer choice names and it is becoming unclear, as it is stretching the choices on two (or more) lines.
So, after some searching, i have found a solution to display the choices menu vertically:

 

$decision = $Host.UI.PromptForChoice($title, $question, $options, [int[]](0))

 

However, i have a strange issue with it. Using Enter for default choice and typing "?" with Enter is executing correctly.
Other options are not executing after typing the letter + Enter, but waiting for another choice input, until Enter is pressed without a letter.

 

$decision = $Host.UI.PromptForChoice($title, $question, $options, [int[]](0))
[S] Status
[D] Disable
[T] Start
[E] Enable
[C] Clean
[X] Exit
[?] Help
(default is "S")
Choice[0]: ?
S - Show the current Status
D - Disabled actions.
T - Start actios.
E - Enable actions.
C - Cleanup actions .
X - Exit the script.
Choice[0]: D
Choice[1]:
PS C:\temp> $decision
1

 

Can someone please tell me why does it behave like that?

Thanks in advance.

Resources