powershell - 清除 $host.UI.RawUI.KeyAvailable

标签 powershell

我有一个每 30 分钟自动刷新一次的脚本,在使控制台窗口聚焦并按任意键后,它将手动刷新。问题是一旦你按下一个键,它就会停止自动刷新。

$timeout = New-TimeSpan -Minutes 30    
$sw = [diagnostics.stopwatch]::StartNew()

while ($sw.elapsed -lt $timeout){
    if ($host.UI.RawUI.KeyAvailable) {
        $key = $host.UI.RawUI.ReadKey() 
        break 
    }
    start-sleep -seconds 5          
}  

问题是第 4 行文本。一旦你按下一个键,它就会被存储在 $host.UI.RawUI.KeyAvailable 中,它似乎在整个循环之后保留了这一点,并且它认为您在没有按下时再次按下了另一个键,因此它不会每 30 分钟返回一次自动刷新。是否可以清除$host.UI.RawUI.KeyAvailable ?

最佳答案

通过在按下后专注于键自己解决了这个问题。

$timeout = New-TimeSpan -Minutes $sleepmin
$sw = [diagnostics.stopwatch]::StartNew()

while ($sw.Elapsed -lt $timeout){
        if ($host.UI.RawUI.KeyAvailable) {
            $key = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp,IncludeKeyDown")
            if ($key.KeyDown -eq "True"){
                        break    
                        }           
            } 
Start-Sleep -Seconds 5
     }  

关于powershell - 清除 $host.UI.RawUI.KeyAvailable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43146869/

相关文章:

powershell - 将参数传递给Register-EngineEvent操作脚本 block

python - 从按日期/名称分组的单独目录中的 JPEG 生成 PDF

azure - coverlet 不会在 azure devops 中创建报告

powershell - 在 PowerShell 中使用动态参数值

powershell - 如何在PowerShell中将列添加到现有CSV行?

powershell - ArrayList 中的空元素导致 'Cannot bind argument to parameter' 错误

powershell - 在函数中的 PowerShell 中增加变量

powershell - Get-ADUser 不缓存结果

powershell - 想要使用 Powershell Copy-Item 等到复制完成

powershell - 测试失败时不要在 TFS 中运行测试后脚本