2016-07-01 1 views
2

У меня есть сценарий, который ждет ввода пользователем, а затем в зависимости от того, что они нажимают. Но проблема заключается в том, что скрипт продолжается независимо от того, что они нажимают (но если это не один из двух ключей, который он ожидает, я просто получаю ошибки). Вот snippint я работаю надPowershell не продолжается до тех пор, пока не будет нажата какая-либо клавиша

Write-Host "What do you want to do next?" -nonewline 
Write-Host " 

    u - Search for another user 
    c - Enter a computer name 

" 

# Prompt for an action 
Write-Host ">> Select shortcut action: " -nonewline 

$key = [Console]::ReadKey() 
$value = $key.KeyChar 

switch($value) { 
    c { $c = Read-Host "Enter computer or IP"} 
    u { $u = Read-Host "Enter user" } 
} 


# now we continue on with the code depending on what was pressed 

То, что я хотел бы, если ничего, кроме c или u прижаты сказать пользователю, что это не действительный ключ и вернуться к началу этого snippint и предложит пользователю снова за какое действие нужно сделать дальше.

ответ

2

Просто обернуть свой код в do-while цикл, который продолжается до тех пор, как $value не c или u:

do 
{ 
    $key = [Console]::ReadKey($true) 
    $value = $key.KeyChar 

    switch($value) { 
     c { $c = Read-Host "Enter computer or IP"} 
     u { $u = Read-Host "Enter user" } 
    } 
} 
while ($value -notmatch 'c|u') 
Смежные вопросы