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

Powershell ISE中IF选择交互脚本仅第二个选项生效求助

问题排查与修正

核心错误原因

  • 你在判断分支时误用了$option1/$option2这两个ChoiceDescription对象作为判断依据,而PromptForChoice()方法返回的$choice才是用户选择对应的选项索引值,永远不会出现$option1 -eq 1的情况,所以第一个分支永远不会触发。
  • PromptForChoice()的返回值是从0开始计数的索引:用户选第一个选项(1)返回0,选第二个选项(2)返回1,你设置的默认值1也对应第二个选项,这也是你始终得到第二个输出的原因之一。
  • 第二个分支的判断逻辑完全错误,$option2 -ne 2永远成立,所以脚本始终执行第二个分支的输出。

修正后代码

$title = "Convert Bat to Ps1"
$message = "Press 1 to say Hello, or Press 2 to say Goodbye"
$option1 = New-Object System.Management.Automation.Host.ChoiceDescription "1", "1"
$option2 = New-Object System.Management.Automation.Host.ChoiceDescription "2", "2"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($option1, $option2)
# 最后一个参数是默认选项的索引,要默认选1就填0,默认选2填1
$choice=$host.ui.PromptForChoice($title, $message, $options, 0)
If ($choice -eq 0) {
  'Hello, Person!'
  exit
} 
If ($choice -eq 1) {
  'Goodbye, Person!'
  exit
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:06:03