我希望代码继续循环,直到它接收到正确的验证输入。如果用户输入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:UsersDocumentsScriptsRestore.txt"
}
elseif ($user_input -eq 'no') {
Write-Host "Check id"
}
else {
Write-Host "Answer must be 'yes' or 'no'"
}
使用PrompForChoice
,您的脚本可以看起来像这样,因为它已经确保了选项之一必须被选中:
if($Host.UI.PromptForChoice($null, 'Does id look correct?', ('&Yes', '&No'), 0) -eq 0) {
Write-Host 'Running Pre- script...'
$invokeSqlcmdSplat = @{
ServerInstance = 'ServerB'
Database = 'master'
InputFile = 'C:UsersDocumentsScriptsRestore.txt'
}
Invoke-Sqlcmd @invokeSqlcmdSplat
}
else {
Write-Host 'Check id'
}