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)
逻辑说明
do代码块优先执行输入与判断逻辑,保证至少向用户发起一次询问- 输入
yes或no时,执行对应业务逻辑后用break终止循环 - 输入非法内容时,仅提示错误,循环会自动重新执行,再次发起询问
内容的提问来源于stack exchange,提问作者movement
相关产品推荐
相关产品推荐

