Почему я не могу прочитать KeyPress более одного раза в PowerShell? - PullRequest
0 голосов
/ 24 января 2019
$KeyOption = 'Y','N'
while ($KeyOption -notcontains $KeyPress.Character) {
 $KeyPress = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}

В первый раз, когда я запускаю это, я могу прочитать персонажа, но в следующий раз, когда я запускаю это, не так много ...

  • Да, я запускаю его в окне PowerShell
  • Нет, я не запускаю от PowerShell ISE.

Я посмотрел на документы для этого, и есть связанная функция с именем $ host.UI.RawUI. FlushInputBuffer , но ее запуск, похоже, не меняет того факта, что я могу заставить его работать только один раз ... мне нужно что-то еще делать?

1 Ответ

0 голосов
/ 24 января 2019

Если вы снова запустите свой код в той же области действия , $KeyPress по-прежнему будет иметь значение из предыдущего запуска, и если при предыдущем запуске удалось выйти из цикла while на основе действительного нажатия клавишипоследующие прогоны даже не войдут в цикл.

Поэтому переключитесь на цикл do { ... } while (...):

$KeyOption = 'Y','N'
do {
  $KeyPress = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
} while ($KeyOption -notcontains $KeyPress.Character)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...