Cómo presionar cualquier tecla para continuar en PowerShell

  1. Usar ReadKey (System.Console) para habilitar el presione cualquier tecla para continuar en PowerShell
  2. Usar ReadKey (Console) para habilitar el presione cualquier tecla para continuar en PowerShell
  3. Usar ReadKey (RawUI) para habilitar el presione cualquier tecla para continuar en PowerShell
  4. Usar Read-Host para habilitar el presione cualquier tecla para continuar en PowerShell
  5. Usar el comando cmd /c 'pause' para habilitar el presione cualquier tecla para continuar en PowerShell
  6. Usar timeout para habilitar el presione cualquier tecla para continuar en PowerShell
  7. Conclusión
Cómo presionar cualquier tecla para continuar en PowerShell

En la programación de PowerShell, habilitar una funcionalidad de presione cualquier tecla para continuar es un requisito común, especialmente al crear aplicaciones interactivas de línea de comandos o proporcionar retroalimentación a los usuarios. Existen varios métodos para lograr esta funcionalidad, cada uno con sus propias ventajas y casos de uso.

Este artículo explora varios métodos para implementar la función de presione cualquier tecla para continuar en scripts de PowerShell, que van desde cmdlets integrados hasta aprovechar comandos externos y objetos COM.

Usar ReadKey (System.Console) para habilitar el presione cualquier tecla para continuar en PowerShell

El método [System.Console]::ReadKey() en PowerShell se usa para leer la siguiente tecla o tecla de función presionada por el usuario desde el flujo de entrada estándar (típicamente el teclado). Cuando se llama sin argumentos, este método espera a que el usuario presione una tecla y devuelve un objeto del tipo [System.ConsoleKeyInfo], que representa la tecla presionada.

El System.Console ReadKey se puede ejecutar como se muestra a continuación. Acepta cualquier tecla excepto Shift, Alt, Ctrl y otras teclas modificadoras.

$keyInfo = [System.Console]::ReadKey($true)
Write-Host "Key Pressed: $($keyInfo.KeyChar)"

En la línea de código $keyInfo = [System.Console]::ReadKey($true), estamos utilizando el método [System.Console]::ReadKey() para capturar la entrada del usuario. Al pasar $true como argumento, indicamos que la tecla presionada no debe ser mostrada en la ventana de la consola.

Esto evita que la consola se llene de caracteres innecesarios, proporcionando una experiencia de usuario más limpia. Para mostrar la salida de $keyInfo, podemos acceder a sus propiedades utilizando notación de punto.

Salida:

powershell presione cualquier tecla para continuar - salida 1

Usar ReadKey (Console) para habilitar el presione cualquier tecla para continuar en PowerShell

Puedes usar [Console]::ReadKey() para habilitar el presione cualquier tecla para continuar en PowerShell. Puede leer teclas y modificadores mientras pausa la ejecución. Excluye Shift, Alt, Ctrl y otras teclas modificadoras.

$keyInfo = [Console]::ReadKey()

En la línea $keyInfo = [Console]::ReadKey(), utilizamos el método [Console]::ReadKey() para capturar la entrada del usuario. Este método espera que el usuario presione una tecla y devuelve un objeto que representa la tecla presionada, almacenándolo en la variable $keyInfo.

Salida:

powershell presione cualquier tecla para continuar - salida 2

Usar ReadKey (RawUI) para habilitar el presione cualquier tecla para continuar en PowerShell

El método $Host.UI.RawUI.ReadKey() en PowerShell se usa para leer la siguiente tecla o tecla de función presionada por el usuario desde la entrada de la consola. Cuando se llama, este método espera a que el usuario presione una tecla y devuelve un objeto que representa la tecla presionada.

Este objeto contiene propiedades como Character, que representa el carácter Unicode de la tecla presionada, y KeyDown, que indica si la tecla se presionó hacia abajo.

Este método es similar al [Console]::ReadKey(). Acepta cualquier tecla, incluidas Ctrl, Shift, Alt y otras teclas modificadoras.

Existen diferentes ReadKeyOptions que se pueden pasar en el método RawUI ReadKey, como IncludeKeyDown, IncludeKeyUp, NoEcho y AllowCtrlC.

Ejemplo:

$keyInfo = $Host.UI.RawUI.ReadKey()

En este ejemplo, usamos $Host.UI.RawUI.ReadKey() para capturar la tecla presionada por el usuario y almacenarla en la variable $keyInfo. Este método espera a que el usuario presione una tecla y devuelve un objeto que representa la tecla presionada.

El objeto $keyInfo contiene propiedades como Character (que representa el carácter de la tecla presionada) y KeyDown (que indica si la tecla se presionó hacia abajo).

Salida:

powershell presione cualquier tecla para continuar - salida 3

Usar Read-Host para habilitar el presione cualquier tecla para continuar en PowerShell

El cmdlet Read-Host en PowerShell es una herramienta versátil utilizada para capturar la entrada del usuario desde la ventana de la consola. Su propósito principal es mostrar un mensaje de aviso al usuario y esperar a que introduzca un valor, que luego se almacena en una variable para su posterior procesamiento dentro del script.

Ejemplo:

Read-Host -Prompt "Press any key to continue"

En este ejemplo, usamos Read-Host con el parámetro -Prompt para mostrar el mensaje "Presione cualquier tecla para continuar..." al usuario. El script pausa la ejecución en este punto, esperando que el usuario introduzca cualquier texto seguido de la tecla Enter.

Aunque no es exactamente presione cualquier tecla, este método logra un resultado similar al requerir la entrada del usuario antes de continuar.

Salida:

powershell presiona cualquier tecla para continuar - salida 4

Usar el comando cmd /c 'pause' para habilitar el presione cualquier tecla para continuar en PowerShell

En la programación de PowerShell, el método cmd /c 'pause' proporciona una forma simple de pausar la ejecución del script y esperar el reconocimiento del usuario antes de proceder. Este método aprovecha el comando cmd para ejecutar el comando pause desde el símbolo del sistema dentro de un script de PowerShell.

Cuando se ejecuta, el comando pause muestra el mensaje "Presione cualquier tecla para continuar . . ." y espera a que el usuario presione cualquier tecla antes de permitir que el script continúe su ejecución.

Ejemplo:

cmd /c pause

En este ejemplo, usamos el comando cmd /c 'pause' para pausar la ejecución del script y esperar la entrada del usuario. Al ejecutarse, la ventana del símbolo del sistema muestra el mensaje "Presione cualquier tecla para continuar . . ." y espera a que el usuario presione cualquier tecla antes de permitir que el script continúe.

Salida:

powershell presione cualquier tecla para continuar - salida 5

Usar timeout para habilitar el presione cualquier tecla para continuar en PowerShell

El comando timeout puede pausar la ejecución por un período de tiempo específico o un tiempo infinito. Puedes usar la opción /t para especificar el tiempo en segundos.

El valor válido del tiempo de espera especificado varía de -1 a 99999.

Ejemplo:

timeout /t 5

En este ejemplo, usamos el comando timeout para pausar la ejecución del script durante 5 segundos. Esto crea efectivamente un aviso para que el usuario espere 5 segundos antes de continuar.

Salida:

powershell presione cualquier tecla para continuar - salida 6

El valor -1 se utiliza para pausar la ejecución por un tiempo infinito si no se presiona ninguna tecla.

timeout /t -1

Salida:

powershell presiona cualquier tecla para continuar - salida 7

Conclusión

Implementar la función de presione cualquier tecla para continuar en scripts de PowerShell es esencial para crear aplicaciones interactivas y amigables en línea de comandos. Al utilizar métodos como [System.Console]::ReadKey(), [Console]::ReadKey(), Read-Host, cmd /c 'pause', timeout y WScript.Shell Popup, los autores de scripts pueden proporcionar a los usuarios indicaciones claras y pausar la ejecución hasta el reconocimiento del usuario.

Cada método ofrece capacidades únicas y puede adaptarse a requisitos específicos, asegurando una experiencia de usuario fluida y mejorada interactividad del script. Ya sea mostrando mensajes informativos, confirmando acciones o creando utilidades interactivas, PowerShell ofrece herramientas versátiles para satisfacer diversas necesidades de programación.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website