Powershell - 等待输入10秒钟

时间:2013-06-06 14:20:28

标签: powershell

$inputYN = Read-Host "(defaults to y in 10 sec) [y/n] ";

如果用户在10秒内未提供任何输入,则默认$inputYN应转至“是”并继续前进至下一个任务。

1 个答案:

答案 0 :(得分:6)

你的问题引起了我的兴趣。我不确定它会有多好用,但我测试了几次并得到了正确的按键。如果您尝试输入大写字母,则效果不佳。不过,必须有一种比这更好的方法。您可以随时查看其他论坛,例如PowerShell.comPowerShell.org,以获得不同的人群。

function Get-Answer {
    $counter = 0
    while($counter++ -lt 100){
        if($Host.UI.RawUI.KeyAvailable){
            #You could check to see if it was the "Shift Key or another"
            $key = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp")
            break
        }
        else{
            Start-Sleep -Milliseconds 100
            $key = $false
        }
    }
    return ($key)
}

Write-Host 'Enter y/n'
$answers = Get-Answer
if($answers -eq $false -or ($answers.Character -eq 'y')){
    "Yes is default"
}
elseif($answers.Character -eq 'n'){
    "NO!!!!"
}
else{
    "Invalid Key $($answers.Character): `"YES`" is being used now."
}