Establecer el valor predeterminado con Read-Host en PowerShell

Waqar Aslam 21 junio 2023
  1. Descripción general de Read-Host en PowerShell
  2. Diferentes formas de establecer el valor predeterminado de la solicitud con Read-Host en PowerShell
Establecer el valor predeterminado con Read-Host en PowerShell

En este artículo, comprenderemos diferentes formas de establecer el valor predeterminado para el comando Read-Host.

Descripción general de Read-Host en PowerShell

Realiza una lectura línea por línea de la entrada de la consola. Se toma una línea de entrada de la consola y se lee mediante el cmdlet Read-Host (stdin).

Puede usarlo para pedir comentarios a un usuario en muchas situaciones. Este cmdlet le permite solicitar a los usuarios datos confidenciales como contraseñas, ya que le permite conservar la entrada como una cadena segura.

Read-Host limita el número de 1022 caracteres, para ser exactos, que aceptará como entrada de un usuario. A continuación se muestra la sintaxis de Read-Host para recibir datos y almacenarlos en una variable.

$Name = Read-Host "Please enter your name."

La variable $Name se actualiza con el valor ingresado cada vez que se ingresa un valor y se presiona la tecla Enter.

Diferentes formas de establecer el valor predeterminado de la solicitud con Read-Host en PowerShell

Primer enfoque para establecer el valor predeterminado

Cree una variable llamada defaultPromptValue y asígnele el valor de cadena Saad. Este valor se utilizará en lugar de la entrada del usuario si decide no proporcionar uno.

$defaultPromptValue = 'Saad'

Defina una nueva variable, promptOutput, que producirá un mensaje que le pedirá al usuario que ingrese y utilizará el comando Read-Host para realizar esta acción.

$promptOutput = Read-Host "Press space to use default value [$($defaultPromptValue)]"

El siguiente paso es implementar una condición que verifique si el usuario ha proporcionado alguna entrada. Si la respuesta es afirmativa, el valor introducido se asignará a la variable defaultPromptValue.

Al escribir la condición para esta operación, tenemos dos opciones diferentes.

if ($promptOutput -eq "") {} else {
    $defaultPromptValue = $promptOutput
}

O

if (!$promptOutput -eq "") {$defaultPromptValue = $promptOutput}

Código:

$defaultPromptValue = 'Saad'
$promptOutput = Read-Host "Press space to use default value [$($defaultPromptValue)]"
if (!$promptOutput -eq "") {$defaultPromptValue = $promptOutput}

Otro enfoque para establecer el valor predeterminado

En este enfoque, reubicamos el proceso de recibir la entrada del usuario dentro de la condición que verifica si el usuario ha ingresado algún valor o no. Esto nos permite rastrear mejor si el usuario ha proporcionado o no algún dato.

Sin ninguna acción por parte del usuario, usamos el valor predeterminado, Saad. Sin embargo, si el usuario ofrece una entrada, usamos el valor guardado en la variable promptOutput.

Código:

$defaultPromptValue = 'Saad'
if (($promptOutput = Read-Host "Press enter to accept default value $defaultPromptValue") -eq '') {$defaultPromptValue} else {$promptOutput}

Último enfoque para establecer el valor predeterminado

Este es el último método, pero ciertamente no el menos importante, para establecer el valor predeterminado. Verifica que la entrada la proporcione el usuario y, si lo es, asigna el valor de la entrada del usuario directamente a la variable denominada defaultPromptValue..

Código:

$defaultPromptValue = 'Saad'
if ($promptOutput = Read-Host "Value [$defaultPromptValue]") { $defaultPromptValue = $promptOutput }

De esta forma, no tiene que usar la condición else.

Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn