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

PowerShell脚本实现循环验证合法输入功能咨询

问题:实现PowerShell脚本的循环输入验证

需求:让PowerShell脚本持续循环,直到获取合法的验证输入:

  • 输入yes,执行后续操作
  • 输入no,提示检查之前的脚本输出
  • 输入其他内容,告知必须输入yes或no并重新询问

现有代码如下:

$user_input = Read-Host "Does id look correct? [yes/no]"

if ($user_input -eq 'yes'){
    Write-Host "Running Pre- script..."

    $SQLServer3 = "ServerB" 
    $Database3 = 'master'

    Invoke-Sqlcmd -ServerInstance $SQLServer3 -Database $Database3 -InputFile "C:\Users\Documents\Scripts\Restore.txt"
} 
elseif ($user_input -eq 'no') {
    Write-Host "Check id"
}
else {
    Write-Host "Answer must be 'yes' or 'no'"
}

现有代码缺少的部分

现有代码仅执行单次输入判断,没有循环重复询问的逻辑。要实现持续验证直到输入合法,必须添加循环结构(推荐使用do-while循环,因为它能确保至少执行一次输入操作)。

修改后的完整代码

do {
    $user_input = Read-Host "Does id look correct? [yes/no]"
    
    if ($user_input -eq 'yes'){
        Write-Host "Running Pre- script..."

        $SQLServer3 = "ServerB" 
        $Database3 = 'master'

        Invoke-Sqlcmd -ServerInstance $SQLServer3 -Database $Database3 -InputFile "C:\Users\Documents\Scripts\Restore.txt"
        # 输入合法,跳出循环
        break
    } 
    elseif ($user_input -eq 'no') {
        Write-Host "Check id"
        # 输入合法,跳出循环
        break
    }
    else {
        Write-Host "Answer must be 'yes' or 'no'"
        # 输入不合法,循环自动重启,重新询问
    }
} while ($true)

逻辑说明

  1. do代码块优先执行输入与判断逻辑,保证至少向用户发起一次询问
  2. 输入yes或no时,执行对应业务逻辑后用break终止循环
  3. 输入非法内容时,仅提示错误,循环会自动重新执行,再次发起询问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:33