我有一个脚本,每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
?
答案 0 :(得分:1)
在按下按键后专注于按键解决了这个问题。
$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
}