OK, lo estoy perdiendo. PowerShell me está molestando. Me gustaría que apareciera un cuadro de diálogo de pausa, pero no aparecerá.
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
fuente
fuente
if (!$psise) { <# pause #> }
. Si eres como yo y el 99% de la razón por la que quieres una pausa es para poder leer la pantalla antes de que parpadee, esto te ayudará, porque si estás en el ISE, no parpadea y no lo haces. 't need the pauseRespuestas:
(No es la forma de PowerShell, pero es mucho más elegante).
Salva árboles. Utilice frases ingeniosas.
fuente
Creo que vale la pena recapitular / resumir las opciones aquí para mayor claridad ... luego ofrecer una nueva variación que creo que proporciona la mejor utilidad.
<1> ReadKey (System.Console)
<2> ReadKey (RawUI)
<3> cmd
<4> Host de lectura
<5> Compuesto ReadKey
Esta es una combinación de <1> anterior con la solución ISE / kludge extraída de la propuesta en el blog tecnológico de Adam (cortesía de Nick de comentarios anteriores en esta página). Hice dos ligeras mejoras en este último: agregué Test-Path para evitar un error si usa Set-StrictMode (lo hace, ¿no?) Y el Write-Host final para agregar una nueva línea después de presionar la tecla para poner el mensaje en el lugar correcto.
fuente
AllowCtrlC
parámetro a la opción 2 permite al usuario hacer clic en Ctrl + C sin terminar el script. Sin embargo, esta opción todavía no excluye correctamente la tecla modificadora Ctrl. (actúa como si el usuario solo hiciera clic en la tecla Ctrl) Referencia: Microsoft TechNet - Windows PowerShell Consejo: presione cualquier tecla para continuarSupongo que desea leer la entrada de la consola. Si es así, utilice
Read-Host
.fuente
Las soluciones como
cmd /c pause
hacen que un nuevo intérprete de comandos se inicie y se ejecute en segundo plano. Aunque es aceptable en algunos casos, esto no es realmente ideal.Las soluciones que utilizan
Read-Host
obligan al usuario a presionar Entery no son realmente "ninguna tecla".Esta solución le dará una verdadera interfaz de "presione cualquier tecla para continuar" y no iniciará un nuevo intérprete, que esencialmente imitará el
pause
comando original .fuente
Además de la respuesta de Michael Sorens :
<6> ReadKey en un nuevo proceso
fuente
-NoNewWindow
se haya agregado :)