En attente d'une entrée utilisateur avec un délai d'attente
J'ai cherché mais apparemment, mon google foo est faible. Ce que j'ai besoin d'une manière de l'invite de saisie de l'utilisateur dans la console et avoir le temps de la demande après une période de temps et de continuer l'exécution du script, si aucune entrée n'est disponible en. Aussi loin que je peux dire, Read-Host ne fournit pas cette fonctionnalité. N' $host.L'INTERFACE utilisateur.PromptForChoice (), ni les $host.L'INTERFACE utilisateur.RawUI.ReadKey(). Merci d'avance pour tous les pointeurs.
EDIT: merci à Lars Truijens pour trouver la réponse. J'ai pris le code qu'il l'a souligné et encapsulé dans une fonction. Notez que le chemin que j'ai mis en œuvre les moyens il pourrait y avoir jusqu'à une seconde de retard entre le moment où l'utilisateur appuie sur une touche et lors de l'exécution du script se poursuit.
function Pause-Host
{
param(
$Delay = 1
)
$counter = 0;
While(!$host.UI.RawUI.KeyAvailable -and ($counter++ -lt $Delay))
{
[Threading.Thread]::Sleep(1000)
}
}
source d'informationauteur EBGreen
Vous devez vous connecter pour publier un commentaire.
Trouvé quelque chose ici:
C'est assez vieux maintenant, mais comment je l'ai résolu basé sur le même KeyAvailable méthode est ici:
https://gist.github.com/nathanchere/704920a4a43f06f4f0d2
Il attend pendant x secondes, l'affichage d'un
.
pour chaque seconde qui s'écoule jusqu'à la limite de temps d'attente. Si une touche est pressée, elle retourne$true
sinon$false
.Et à utiliser:
Pour les personnes qui sont à la recherche d'un âge moderne de la solution avec une contrainte supplémentaire pour la sortie d'un script PowerShell sur un pré-définis clés de la presse, la solution suivante peut vous aider à:
Exemple de script de sortie:
Reportez-vous Document de Microsoft sur les états clés pour la manipulation de combinaisons.
Crédits: Lien Technet