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

如何在PowerShell中实现含Switch的循环,执行后返回菜单重选?

PowerShell 带Switch语句的循环菜单实现

要实现操作后回到菜单重复执行的需求,do-while循环是最适合的方案——它能保证菜单至少执行一次,且每次操作完成后回到菜单,直到用户主动选择退出。以下是修正后的完整可运行代码:

do {
    # 显示菜单并获取用户选择
    $choice = Read-Host @"
welcome to AD tool :)
select: 
1: new user
2: new OU
3: exit
"@

    # 处理用户选择的Switch逻辑
    switch ($choice) {
        1 { 
            $name = Read-Host "enter the user name"
            New-ADUser -Name $name -AccountPassword (Read-Host -AsSecureString "AccountPassword") -Enabled $true -PasswordNeverExpires $true
            Write-Host "User created successfully`n"
        }
        2 { 
            $ouName = Read-Host "Enter OU name"
            New-ADOrganizationalUnit -Name $ouName -Path "DC=slipknot,DC=main" -ProtectedFromAccidentalDeletion $False
            Write-Host "OU created successfully`n"
        }
        3 { 
            Write-Host "Exiting AD tool..."
            break
        }
        default {
            Write-Host "Invalid selection, please choose 1, 2, or 3`n"
        }
    }
} while ($choice -ne 3) # 未选择退出时重复循环

核心要点说明:

  • do-while循环逻辑:先执行菜单展示和操作处理,再判断是否继续循环,确保菜单至少显示一次。
  • 退出机制:新增3: exit选项,让用户可以主动终止程序,避免无限循环。
  • 错误处理:通过default分支捕获无效输入,提示用户重新选择。
  • 语法修正:修复了原代码中Switch语句的格式错误,确保分支代码块正确包裹在{}内。

原代码的问题分析:

  1. foreach循环依赖的$scripts变量未定义,没有可遍历的集合,逻辑不成立。
  2. Switch语句的语法不符合PowerShell规范,正确格式应为switch(表达式) { 分支值 { 执行代码 } }。
  3. 缺少循环终止条件,无法控制循环的开始和结束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:30:39