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

PowerShell do-until循环未按预期工作 非Y/N输入仍继续执行脚本

故障根因

原代码循环终止条件存在两个错误,直接导致输入校验完全失效:

  • 变量语法错误:PowerShell单引号内的内容不会做变量解析,原代码写的'$null'是普通字符串,不是代表空值的内置变量$null,判断条件从「输入不为空」变成了「输入不等于字符串$null」,空值判断逻辑完全失效。
  • 校验逻辑缺失:终止条件没有判断输入是否为合法的Y/N值,只要用户输入的内容不是字符串$null,不管输入乱码、数字、其他字母,都会直接满足退出条件跳出循环,不会重新提示。
修正后代码
$msg = 'Does this Share contain Sensitive Data? [Y/N]'
do {
    $response = Read-Host -Prompt $msg
    # 自动忽略输入前后的空格,兼容大小写输入
    $cleanResponse = $response.Trim().ToLower()
    if ($cleanResponse -eq 'n') {
        $sdata = "No"
    }
    elseif ($cleanResponse -eq 'y') {
        $sdata = "(Sensitive)"
    }
    else {
        # 非法输入时清空响应值,触发继续循环
        $cleanResponse = $null
    }
} until ($null -ne $cleanResponse)

修正后逻辑:用户输入前后带空格、输入大写Y/N都能正常识别,输入非法内容、直接回车留空时会重复展示提示,只有输入Y/y/N/n时才会退出循环继续执行后续逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:39:18