PowerShell菜单创建求助:选项显示异常及循环功能需求
解决PowerShell菜单显示异常及添加循环功能
修正后的完整脚本
# 定义菜单标题和选项 $Title = "Select an option:" $Options = @( [System.Management.Automation.Host.ChoiceDescription]::new("&A", "Option A"), [System.Management.Automation.Host.ChoiceDescription]::new("&B", "Option B"), [System.Management.Automation.Host.ChoiceDescription]::new("&C", "Option C") ) # 循环菜单逻辑 do { # 显示菜单并获取选择 $Selection = $Host.UI.PromptForChoice($Title, "", $Options, 0) # 处理用户选择 switch ($Selection) { 0 { Write-Host "You selected Option A" } 1 { Write-Host "You selected Option B" } 2 { Write-Host "You selected Option C" } } # 询问是否继续 $ContinueOptions = @( [System.Management.Automation.Host.ChoiceDescription]::new("&Yes", "Continue using the menu"), [System.Management.Automation.Host.ChoiceDescription]::new("&No", "Exit the script") ) $ContinueChoice = $Host.UI.PromptForChoice("Continue?", "", $ContinueOptions, 0) } while ($ContinueChoice -eq 0)
问题解析与修复说明
1. 菜单显示异常的原因及修复
你遇到的[1] 1 [2] 2显示问题,核心原因是使用了中文全角引号“”,PowerShell无法正确解析这种引号内的文本,导致选项的显示文本失效,只能显示索引编号。
- 修复:将所有中文引号替换为英文半角引号
"",PowerShell才能正确识别ChoiceDescription的显示文本和描述文本。
2. 循环菜单功能实现
通过do-while循环包裹菜单逻辑,每次用户完成选项操作后,弹出二次选择菜单询问是否继续:
- 定义
$ContinueOptions包含“继续”和“退出”两个选项 - 用
$Host.UI.PromptForChoice获取用户选择,当选择“是”(索引0)时,循环继续;选择“否”(索引1)时,退出循环,脚本结束。
内容的提问来源于stack exchange,提问作者IT-Consultant
相关产品推荐
相关产品推荐

