Appuyez sur n’importe quelle touche pour continuer

Selon la documentation de Microsoft, read-host permet à l’utilisateur de saisir une entrée, puis d’appuyer sur Entrée pour continuer. Pas exactement le comportement correct si vous voulez avoir “Appuyez sur n’importe quelle touche pour continuer”. (Attendez … où est la touche Any ?!)

Y a-t-il un moyen d’y parvenir? Quelque chose comme read-char ?

J’ai essayé de chercher “entrée à un seul caractère” et “entrée Powershell” pour voir si je pouvais trouver une liste de tous les moyens d’obtenir un apport sans beaucoup de chance. Et plusieurs questions de débordement de stack qui semblaient optimistes utilisent read-host qui ne fonctionne pas pour la fonction “appuyez sur une touche …”.

Voici ce que j’utilise

 Write-Host -NoNewLine 'Press any key to continue...'; $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); 

J’ai créé une petite fonction Powershell pour émuler la pause MSDOS. Cela gère si vous exécutez Powershell ISE ou non ISE. ( ReadKey ne fonctionne pas dans ISE powershell). Lorsque vous exécutez Powershell ISE, cette fonction ouvre un Windows MessageBox . Cela peut parfois être déroutant, car la MessageBox n’est pas toujours au premier plan. En tout cas, la voici:

Utilisation: pause "Press any key to continue"

Définition de la fonction:

 Function pause ($message) { # Check if running Powershell ISE if ($psISE) { Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("$message") } else { Write-Host "$message" -ForegroundColor Yellow $x = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyDown") } } 

Découvrez la méthode ReadKey() sur la classe System.Console .NET. Je pense que cela fera ce que vous cherchez.

http://msdn.microsoft.com/en-us/library/system.console.readkey(v=vs.110).aspx

Exemple:

 Write-Host -Object ('The key that was pressed was: {0}' -f [System.Console]::ReadKey().Key.ToSsortingng());