代码之家  ›  专栏  ›  技术社区  ›  leeand00

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

  •  1
  • leeand00  · 技术社区  · 6 年前
    $KeyOption = 'Y','N'
    while ($KeyOption -notcontains $KeyPress.Character) {
     $KeyPress = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
    }
    

    我第一次运行这个时,我能读到这个角色,但下次运行这个时,我看不到太多…

    • 是,我正在PowerShell窗口中运行它
    • 不,我不是在运行它 来自PowerShell ISE。

    我看着 docs 为此,有一个名为$host.ui.rawui的相关函数。 FlushInputBuffer 但是运行它似乎并不能改变我只能使它工作一次的事实…还有什么我需要做的吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   mklement0    6 年前

    如果您再次运行代码 在同一范围内 , $KeyPress 仍然具有上一次运行的值,如果上一次运行成功退出 while 循环基于有效的按键,后续运行甚至不会进入循环。

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

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