我有一个每 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/