为什么我不能在PowerShell中多次读取KeyPress?

时间:2019-01-24 03:19:45

标签: powershell

$KeyOption = 'Y','N'
while ($KeyOption -notcontains $KeyPress.Character) {
 $KeyPress = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}

第一次运行此程序,我就能读取字符,但是下次运行此程序时,则不会那么多...

  • 是的,我正在PowerShell窗口中运行它
  • 不,我没有运行它 从PowerShell ISE。

为此,我查看了docs,有一个名为$ host.UI.RawUI。FlushInputBuffer的相关函数,但是运行它似乎并没有改变我只能做到这一点的事实。工作一次...还有什么需要做的吗?

1 个答案:

答案 0 :(得分:3)

如果您再次在同一范围内运行代码 ,则$KeyPress仍具有上一次运行的值,并且如果上一次运行设法退出了while循环根据有效的按键操作,后续运行甚至都不会进入循环。

因此,切换到do { ... } while (...)循环:

$KeyOption = 'Y','N'
do {
  $KeyPress = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
} while ($KeyOption -notcontains $KeyPress.Character)