提问人:movement 提问时间:3/31/2023 更新时间:3/31/2023 访问量:27
循环,直到收到正确的验证输入 Powershell
Looping through till you receive correct validation input Powershell
问:
我希望代码继续循环,直到它收到正确的验证输入。如果用户输入 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'"
}
答:
0赞
Santiago Squarzon
3/31/2023
#1
使用 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:\Users\Documents\Scripts\Restore.txt'
}
Invoke-Sqlcmd @invokeSqlcmdSplat
}
else {
Write-Host 'Check id'
}
评论
PromptForChoice(..)