140 votes

Comment faire une "Pause" avec PowerShell 2.0 ?

OK, je perds la tête. PowerShell m'agace. J'aimerais qu'un dialogue de pause apparaisse, mais il ne le fait pas.

PS W:\>>> $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Exception calling "ReadKey" with "1" argument(s): "The method or operation is not implemented."
At line:1 char:23
+ $host.UI.RawUI.ReadKey <<<< ("NoEcho")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

2 votes

J'ai eu le même problème dans PowerShell ISE. Il fonctionne bien dans la console PowerShell standard.

3 votes

Je m'amuse juste avec powershell et c'est toujours aussi ennuyeux, même 2 ans et demi plus tard !

0 votes

Si vous lisez le Lien technique d'Adam ou le code dans Réponse de @Michael Sorens (à peu près à mi-chemin de la page au moment où j'écris ces lignes en 2020), vous découvrirez peut-être une technique consistant à envelopper votre pause dans if (!$psise) { <# pause #> } . Si vous êtes comme moi et que 99% de la raison pour laquelle vous voulez une pause est que vous pouvez lire l'écran avant qu'il ne clignote, alors ceci vous aidera, car si vous êtes dans l'ISE, il ne clignote pas et vous n'avez pas besoin de la pause.

1voto

Teraokay Points 55

Vous pouvez utiliser FlushInputBuffer pour écarter tout caractère tapé par erreur dans la console, en particulier pour les opérations de longue durée, avant d'utiliser la fonction ReadKey :

Write-Host -NoNewLine 'Press any key to continue...'
$Host.UI.RawUI.FlushInputBuffer()
$Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown') | Out-Null

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X