等待用户输入超时

时间:2020-03-06 14:53:28  来源:igfitidea点击:

我已经搜索过,但显然我的Google foo很弱。我需要的是一种在控制台中提示用户输入并在一段时间后使请求超时并在没有输入输入的情况下继续执行脚本的方法。据我所知,Read-Host不提供此功能。功能。 $ host.UI.PromptForChoice()和$ host.UI.RawUI.ReadKey()都不会。在此先感谢我们提供任何指导。

编辑:非常感谢Lars Truijens找到答案。我已经接受了他指出的代码,并将其封装到一个函数中。请注意,我实现它的方式意味着在用户敲击按键与脚本继续执行之间可能会有多达一秒钟的延迟。

function Pause-Host
{
    param(
            $Delay = 1
         )
    $counter = 0;
    While(!$host.UI.RawUI.KeyAvailable -and ($counter++ -lt $Delay))
    {
        [Threading.Thread]::Sleep(1000)
    }
}

解决方案

在这里找到了一些东西:

$counter = 0
while(!$Host.UI.RawUI.KeyAvailable -and ($counter++ -lt 600))
{
      [Threading.Thread]::Sleep( 1000 )
}