PowerShell получает тот же Read-Host, если неправильно введен - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь получить тот же Read-Host, если пользователь ввел неверный ввод. Я пробовал много разных решений, но не могу заставить его работать.

Мой пример - простой сценарий да / нет. Но я хочу, чтобы он снова дал мне Read-Host, если это не ja / nej. Также можно получить более универсальное решение, как, например, если неправильный входной лоток снова.

Write-Host "Er du født før 1. januar 2000?";
$Readhost = Read-Host "ja/nej"
switch ($Readhost)
{
ja {write-host "Så er du over 18 år gammel"}
nej {write-host "Så er du yngere end 18 år"}
default {write-host ”Svar på spørgsmålet!”}
} 

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Если у вас есть предопределенный набор параметров, таких как «да / нет», тогда попробуйте использовать меню, чтобы избежать неправильного ввода. Например:

$selectedFruit = $host.UI.PromptForChoice('Select a Fruit', "Which fruit is your favorite?", ('&Apple', '&Melon', 'Man&go','&Quit'), 0)

switch($selectedFruit)
{
    0 {Write-Host "You chose 'Apple'"}
    1 {Write-Host "You chose 'Melon'"}
    2 {Write-Host "You chose 'Mango'"}
}

В консоли это производит меню как это:

enter image description here

Как вы можете видеть, он будет продолжать запрашивать пользователя, если он введет неправильное значение (или выберите опцию Quit). Если вы не хотите использовать значение по умолчанию, измените 0 в PromptForChoice на -1.

0 голосов
/ 09 ноября 2018

Вам нужна while петля!

Write-Host "Er du født før 1. januar 2000?";
$Readhost = ""

while ($Readhost -notin "ja", "nej") {
    $Readhost = Read-Host "ja/nej"

    switch($Readhost) {
        ja {write-host "Så er du over 18 år gammel"}
        nej {write-host "Så er du yngere end 18 år"}
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...