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

PowerShell菜单输入选项后对应函数未调用循环刷新问题求助

问题原因分析
  • 类型不匹配:Read-Host返回的输入是字符串类型,代码中直接和数字1-9做等值比较,PowerShell严格类型匹配下会判定为不相等,因此if判断始终不通过,直接进入continue逻辑重新加载菜单
  • 函数名不匹配:选项8绑定的调用函数名为Acronis-Images,但实际定义的函数名为Acronis,名称不一致会导致调用失败
  • 输出被立即清屏覆盖:函数执行完成后下一次循环会立刻执行Clear-Host,用户看不到函数执行的输出内容
修复后完整代码
function PORII
{
    Write-Host " PORII was called"
}
function DXD-BODY
{
    Write-Host " DXD BODY was called"
}
function DXD-PAINT
{
    Write-Host " DXD PAINT was called"
}
function DXD-PTO
{
    Write-Host " DXD PTO was called"
}
function DXD-TCF
{
    Write-Host " DXD TCF was called"
}
function FIS-SERVERS
{
    Write-Host " FIS SERVERS was called"
}
function SERVERS
{
    Write-Host " SERVERS was called"
}
function Acronis
{
    Write-Host " Acronis was called"
}

function Menu
{
    param([string]$Title = 'Menu')
    Write-Host " ==================== $Title ==================== "
    while ($true)
    {
        Clear-Host
        Write-Host " Press 1 for PORII: "
        Write-Host " Press 2 for DXD BODY: "
        Write-Host " Press 3 for DXD PAINT: "
        Write-Host " Press 4 for DXD PTO: "
        Write-Host " Press 5 for DXD TCF: "
        Write-Host " Press 6 for FIS SERVERS: "
        Write-Host " Press 7 for SERVERS: "
        Write-Host " Press 8 for Acronis Images: "
        Write-Host " Press 9 for Exit: "

        $a = Read-Host -Prompt "`n Enter your option "
        # 输入转整数并校验范围
        if ([int]::TryParse($a, [ref]$opt) -and $opt -ge 1 -and $opt -le 9)
        {
            switch($opt)
            {
                1 { PORII }
                2 { DXD-BODY }
                3 { DXD-PAINT }
                4 { DXD-PTO }
                5 { DXD-TCF }
                6 { FIS-SERVERS }
                7 { SERVERS }
                8 { Acronis }
                9 { exit }
            }
            # 输出要求的提示
            Write-Host "`nThe function has been called"
            # 暂停等待用户确认后再刷新菜单
            Read-Host -Prompt "`nPress Enter to return to menu"
        }
        else
        {
            Write-Host "`nInvalid option, please enter a number between 1 and 9"
            Read-Host -Prompt "`nPress Enter to try again"
        }
    }
}
Menu
关键修改说明
  1. 新增输入类型转换逻辑,使用[int]::TryParse把输入的字符串转为整数,避免类型不匹配导致的判断失效
  2. 修正选项8的调用函数名,和定义的Acronis保持一致
  3. 函数执行完成后输出要求的The function has been called提示
  4. 新增暂停逻辑,用户按下回车后才会清屏重新加载菜单,可以正常看到执行结果
  5. 新增非法输入的提示,优化交互体验

内容的提问来源于stack exchange,提问作者Stelian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 22:00:03