You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:13:22