OK, je le perds. PowerShell m'ennuie. Je voudrais qu'une boîte de dialogue de pause apparaisse, et ce ne sera pas le cas.
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
powershell
Derrick Bell
la source
la source
if (!$psise) { <# pause #> }
. Si vous êtes comme moi et que 99% de la raison pour laquelle vous voulez une pause est pour que vous puissiez lire l'écran avant qu'il ne clignote, cela vous aidera, car si vous êtes dans l'ISE, il ne clignote pas et vous ne 't need the pauseRéponses:
(Ce n'est pas la méthode PowerShell, mais c'est tellement plus élégant.)
Sauver des arbres. Utilisez des one-liners.
la source
Je pense qu'il vaut la peine de récapituler / résumer les choix ici pour plus de clarté ... puis proposer une nouvelle variante qui, à mon avis, offre la meilleure utilité.
<1> ReadKey (console système)
<2> ReadKey (RawUI)
<3> cmd
<4> hôte de lecture
<5> composite ReadKey
Ceci est un composite de <1> ci-dessus avec la solution de contournement ISE / kludge extraite de la proposition sur Adam's Tech Blog (avec la permission de Nick à partir des commentaires précédents sur cette page). J'ai apporté deux légères améliorations à ce dernier: ajouté Test-Path pour éviter une erreur si vous utilisez Set-StrictMode (vous le faites, n'est-ce pas?!) Et le dernier Write-Host pour ajouter une nouvelle ligne après votre frappe pour mettre le invite au bon endroit.
la source
AllowCtrlC
paramètre au choix 2 permet à l'utilisateur de cliquer sur Ctrl + C sans terminer le script. Néanmoins, ce choix n'exclut toujours pas correctement la touche de modification Ctrl. (il agit comme si l'utilisateur ne cliquait que sur la touche Ctrl) Référence: Microsoft TechNet - Windows PowerShell Astuce: Appuyez sur n'importe quelle touche pour continuerJe suppose que vous voulez lire l'entrée de la console. Si tel est le cas, utilisez
Read-Host
.la source
Les solutions comme
cmd /c pause
provoquent le démarrage et l'exécution d'un nouvel interpréteur de commandes en arrière-plan. Bien que acceptable dans certains cas, ce n'est pas vraiment idéal.Les solutions utilisant
Read-Host
forcent l'utilisateur à appuyer Enteret ne sont pas vraiment "n'importe quelle touche".Cette solution vous donnera une véritable interface "appuyez sur n'importe quelle touche pour continuer" et ne démarrera pas un nouvel interpréteur, qui imitera essentiellement la
pause
commande d' origine .la source
En plus de la réponse de Michael Sorens :
<6> ReadKey dans un nouveau processus
la source
-NoNewWindow
a été ajoutée :)