Volver a la página principal
lunes 7 octubre 2024
27

Cómo solicitar la entrada de usuario en PowerShell con Read-Host

El comando Read-Host en PowerShell se utiliza para solicitar y capturar la entrada de datos del usuario a través de la consola. Es ideal para interactuar con scripts, recopilar información como contraseñas, nombres de archivos o configuraciones, y pausar la ejecución de un script a la espera de la respuesta del usuario.

¿Qué es y cómo usar Read-Host en PowerShell?

Read-Host muestra un mensaje en la consola y espera a que el usuario ingrese un valor, el cual se almacena como una cadena (string). Se puede utilizar para capturar texto simple o, con parámetros adicionales, para ocultar la entrada, como en el caso de contraseñas. Es útil para scripts interactivos que requieren la entrada manual de datos.

Sintaxis básica de Read-Host

Read-Host -Prompt "Mensaje para el usuario"
  • -Prompt: Especifica el mensaje que se muestra al usuario en la consola para indicar qué información se necesita.

Parámetros más utilizados:

  • -Prompt: Define el texto de indicación mostrado al usuario.
  • -AsSecureString: Captura la entrada del usuario como un objeto SecureString, en lugar de un texto legible (para manejar contraseñas de manera segura).

Ejemplos de uso de Read-Host

1. Solicitar la entrada de texto simple

$name = Read-Host -Prompt "Introduce tu nombre"
Write-Output "Hola, $name!"

Salida:

Introduce tu nombre: Juan
Hola, Juan!

Este script solicita al usuario que ingrese su nombre y luego muestra un saludo personalizado.

2. Capturar una contraseña de manera segura

$password = Read-Host -Prompt "Introduce tu contraseña" -AsSecureString

En este ejemplo, la contraseña se almacena como un objeto SecureString, y no se muestra en texto plano mientras se escribe.

3. Solicitar confirmación del usuario

$response = Read-Host -Prompt "¿Deseas continuar? (Sí/No)"
if ($response -eq "Sí") {
    Write-Output "Has decidido continuar."
} else {
    Write-Output "Has cancelado la operación."
}

Este script captura la respuesta del usuario y ejecuta acciones diferentes en función de su elección.

4. Convertir una contraseña de SecureString a texto legible (solo para pruebas)

$password = Read-Host -Prompt "Introduce tu contraseña" -AsSecureString
$plainPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
Write-Output "Tu contraseña en texto plano es: $plainPassword"

Este ejemplo muestra cómo convertir una contraseña almacenada como SecureString a texto plano. Nota: Este procedimiento solo se recomienda para fines de prueba, no para producción.

5. Capturar un número entero de entrada

$number = Read-Host -Prompt "Introduce un número"
if ($number -match '^\d+$') {
    Write-Output "Has introducido el número: $number"
} else {
    Write-Output "El valor introducido no es un número válido."
}

Este script valida que la entrada del usuario sea un número entero y muestra un mensaje en consecuencia.

6. Almacenar una entrada en una variable y reutilizarla

$nombreUsuario = Read-Host -Prompt "Introduce el nombre del usuario"
Write-Output "El nombre ingresado es: $nombreUsuario"

Aquí, el valor ingresado se almacena en la variable $nombreUsuario y luego se reutiliza en una operación posterior.

Uso práctico en scripts

Read-Host es particularmente útil cuando se desea crear scripts interactivos que requieran input manual, como scripts de automatización que dependen de parámetros específicos proporcionados por el usuario. Sin embargo, para scripts de producción o en entornos empresariales, se recomienda minimizar su uso, ya que la automatización total es preferible en la mayoría de los casos.

Referencia oficial

Puedes consultar más detalles sobre Read-Host en la documentación oficial de Microsoft.

Etiquetas:
powershell
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer