Read-Host
Lee una línea de entrada de la consola.
Sintaxis
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Description
El Read-Host
cmdlet lee una línea de entrada desde la consola (stdin). Se puede usar para pedir al usuario una entrada. Dado que puede guardar la entrada como una cadena segura, puede usar este cmdlet para solicitar a los usuarios datos seguros, como contraseñas.
Nota:
Read-Host
tiene un límite de 1022 caracteres que puede aceptar como entrada de un usuario.
Ejemplos
Ejemplo 1: Guardar la entrada de la consola en una variable
En este ejemplo se muestra la cadena "Escriba su edad:" como mensaje. Cuando se escribe un valor y se presiona la tecla Entrar, el valor se almacena en la $Age
variable .
$Age = Read-Host "Please enter your age"
Ejemplo 2: Guardar la entrada de la consola como una cadena segura
En este ejemplo se muestra la cadena "Escribir una contraseña:" como mensaje. A medida que se especifica un valor, los asteriscos (*
) aparecen en la consola en lugar de la entrada. Cuando se presiona la tecla Entrar, el valor se almacena como un objeto SecureString en la $pwd_secure_string
variable .
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Ejemplo 3: Enmascarar la entrada y como una cadena de texto no cifrado
En este ejemplo se muestra la cadena "Escribir una contraseña:" como mensaje. A medida que se especifica un valor, los asteriscos (*
) aparecen en la consola en lugar de la entrada. Cuando se presiona la tecla Entrar, el valor se almacena como un objeto String de texto no cifrado en la $pwd_string
variable.
$pwd_string = Read-Host "Enter a Password" -MaskInput
Ejemplo 4: Normalización de la entrada
En este ejemplo se solicita al usuario que escriba una lista de ciudades separadas por punto y coma. Muestra el valor de la cadena como el usuario escribe. En el ejemplo, el usuario agregó espacios entre algunas de las entradas. Esto podría provocar un error más adelante en el script donde el código espera un nombre exacto.
En el ejemplo se muestra cómo se puede convertir una cadena de entrada en una matriz de entradas sin espacios adicionales.
$prompt = @(
'List the cities you want weather information for.'
'When specifying multiple cities, separate them with a semi-colon, like:'
"'New York; Osan; Koforidua'"
) -join ' '
$cities = Read-Host $prompt
"Input cities string: `n`t'$cities'"
$splitCities = $cities -split ';'
"Split cities array:"
$splitCities | ForEach-Object -Process { "`t'$_'" }
$normalizedCities = $splitCities | ForEach-Object -Process { $_.Trim() }
"Normalized split cities array:"
$normalizedCities | ForEach-Object -Process { "`t'$_'" }
Input cities string:
' New York; Osan ;Koforidua '
Split cities array:
' New York'
' Osan '
'Koforidua '
Normalized split cities array:
'New York'
'Osan'
'Koforidua'
En el ejemplo se usa el -split
operador para convertir la cadena de entrada en una matriz de cadenas. Cada cadena de la matriz incluye el nombre de una ciudad diferente. Sin embargo, las cadenas divididas incluyen espacios adicionales. El Trim()
método quita los espacios iniciales y finales de cada cadena.
Parámetros
-AsSecureString
Indica que el cmdlet muestra asteriscos (*
) en lugar de los caracteres que el usuario escribe como entrada. Cuando se usa este parámetro, la salida del Read-Host
cmdlet es un objeto SecureString (System.Security.SecureString).
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-MaskInput
Indica que el cmdlet muestra asteriscos (*
) en lugar de los caracteres que el usuario escribe como entrada. Cuando se usa este parámetro, la salida del Read-Host
cmdlet es un objeto String .
Esto le permite solicitar de forma segura una contraseña que se devuelve como texto no cifrado en lugar de SecureString.
Este parámetro se agregó en PowerShell 7.1.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Prompt
Especifica el texto del aviso. Escriba una cadena. Si la cadena incluye espacios, escríbalo entre comillas. PowerShell anexa dos puntos (:
) al texto que escriba.
Tipo: | Object |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
None
No se pueden canalizar objetos a este cmdlet.
Salidas
De forma predeterminada, este cmdlet devuelve una cadena.
Cuando se usa el parámetro AsSecureString, este cmdlet devuelve secureString.
Notas
Este cmdlet solo lee de la secuencia stdin del proceso de host. Normalmente, la secuencia stdin está conectada al teclado de la consola host.