Scripts interactivos de PowerShell con Read-Host: Una guía completa

Usando el cmdlet de PowerShell Read-Host, puedes solicitar interactivamente la entrada del usuario del script. Veamos algunas aplicaciones del mundo real sobre cómo podemos usar el cmdlet de PowerShell Read-Host.

Solicitando entrada con Read-Host

El cmdlet Read-Host realiza dos funciones en un script de PowerShell; pausa la ejecución y recibe la entrada. Eso es todo. Read-Host es un cmdlet simple pero útil cuando se necesita obtener información del usuario del script.

En su forma más básica, el cmdlet Read-Host simplemente requiere el uso del parámetro Prompt. Este parámetro Prompt te permite darle al usuario del script alguna indicación sobre qué ingresar. Por ejemplo, si tu script requiere un nombre de servidor, puedes optar por utilizar Read-Host para solicitar al usuario que ingrese eso cuando se ejecute el script.

A continuación, puedes ver que al ejecutar Read-Host dentro de la consola de PowerShell utilizando el parámetro Prompt, PowerShell detiene toda la ejecución y muestra mi mensaje de solicitud, dándole al usuario un mensaje explicativo sobre lo que estamos buscando.

Read-Host PowerShell prompt

Vamos a incorporar esto en un script. Cuando un usuario ingresa información en el indicador, Read-Host devuelve esa información a tu código. Puedes capturar fácilmente esta información asignando la salida a una variable. Tal vez me gustaría pedir un nombre de servidor y luego hacer algo con ese nombre de servidor. De lo contrario, me gustaría enviar una advertencia al usuario para informarle que realmente, realmente necesito ese nombre de servidor.

$serverName = Read-Host -Prompt 'Server name to process'
if ($serverName) {
    Write-Host "We can now use the server name [$serverName] in our code"
} else {
    Write-Warning -Message "No server name input."
}

Usando una estructura simple de si/entonces, puedo asegurarme de que mi usuario introduzca un nombre de servidor. Una vez que lo hagan, puedo capturarlo y hacer algo con él; de lo contrario, enviar un mensaje de advertencia.

Warning when no input

Pidiendo Contraseñas

Deberías saber que no es una buena idea almacenar contraseñas en texto plano en tus scripts. Del mismo modo, nunca es buena idea tener contraseñas almacenadas en texto plano en la memoria. Para superar esto, PowerShell tiene un concepto llamado cadena segura, que es una cadena simple pero encriptada.

A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host? The Read-Host cmdlet has an AsSecureString parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!

Supongamos que tengo un secreto profundo y oscuro que no quiero que nadie sepa, pero necesito pasar esta contraseña a algún tipo de software. Puedes ver a continuación que cuando no uso AsSecureString, ¡me descubres! Sin embargo, si uso AsSecureString, mi secreto está a salvo, ya que cada carácter que escribo se reemplaza con un asterisco y la salida se guarda como una cadena segura en lugar de una cadena de texto plano.

Accepting secure input with Read-Host

Para consultar la documentación de Read-Host, echa un vistazo a Microsoft Docs.

Source:
https://adamtheautomator.com/read-host/