Búsqueda de sitios web

Solicitud de entrada de PowerShell | Varios métodos con ejemplos apropiados


Introducción a la solicitud de entrada de PowerShell

En PowerShell, los usuarios pueden recuperar la entrada solicitándoles el cmdlet Read-Host. Actúa como una entrada estándar y lee la entrada proporcionada por el usuario desde la consola. Dado que la entrada también se puede almacenar como una cadena segura, se pueden solicitar contraseñas mediante este cmdlet. En PowerShell o ISE normal, se muestran dos puntos al final del mensaje que solicita entrada en un ISE más mejorado con GUI; Se muestra una ventana emergente junto con algunos botones. Este artículo explicará en detalle cómo obtener la entrada del usuario en PowerShell mediante el mensaje.

Sintaxis:

Read-Host
NAME
Read-Host

Sintaxis:

Read-Host [[-Prompt] <Object>] [-AsSecureString] [<CommonParameters>]
ALIASES
None

Parámetros:

-AsSecureString:

Esto indicó que la entrada escrita por el usuario está oculta con *. Cuando se utiliza este parámetro, la salida es un objeto de cadena específico. El tipo de datos de este parámetro es Switch. El valor predeterminado es ninguno. No se aceptan entradas de canalización ni caracteres comodín.

-Entrada de máscara:

Esto es como el parámetro de cadena segura en funcionalidad, excepto que la salida devuelta por este es una cadena y no es una cadena segura. El tipo de datos de este parámetro es Switch. El valor predeterminado es ninguno. No se aceptan entradas de canalización ni caracteres comodín.

-Mensaje:

Esto indica el texto del mensaje que se debe mostrar al usuario. Tiene que ser una cuerda. En el caso de espacios, estos deben ir entre comillas. El tipo de datos de este parámetro es un objeto. El valor predeterminado es ninguno. No se aceptan entradas de canalización ni caracteres comodín.

Ejemplos de solicitudes de entrada de PowerShell

Ejemplo n.º 1: mensaje normal

Entrada:

Write-Host "Welcome to demo of powershell prompt input" -ForegroundColor Green
$name= Read-Host -Prompt "Enter your name"
$age= Read-Host -Prompt "Enter your age"
$city= Read-Host -Prompt "Enter your city"
Write-Host "The entered name is" $name -ForegroundColor Green
Write-Host "The entered age is" $age -ForegroundColor Green
Write-Host "The entered city is" $city -ForegroundColor Green

Salida:

Ejemplo #2: guardar la entrada como una cadena segura

Entrada:

Write-Host "Welcome to demo of powershell prompt input" -ForegroundColor Green
$s1= Read-Host -Prompt "Enter your subject 1 name" -AsSecureString
$s2= Read-Host -Prompt "Enter your subject 2 name" -AsSecureString
$s3= Read-Host -Prompt "Enter your subject 3 name" -AsSecureString
Write-Host "The entered name is" $s1 -ForegroundColor Green
Write-Host "The entered age is" $s2 -ForegroundColor Green
Write-Host "The entered city is" $s3 -ForegroundColor Green

Salida:

Ejemplo 3: formulario personalizado

Entrada:

Write-Host "Demo of custom prompt using form" -ForegroundColor Green
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$testform = New-Object System.Windows.Forms.Form
$testform.Text = 'Data Entry Form'
$testform.Size = New-Object System.Drawing.Size(400,300)
$testform.StartPosition = 'CenterScreen'
$okb = New-Object System.Windows.Forms.Button
$okb.Location = New-Object System.Drawing.Point(85,130)
$okb.Size = New-Object System.Drawing.Size(75,25)
$okb.Text = 'Add'
$okb.DialogResult = [System.Windows.Forms.DialogResult]::OK
$testform.AcceptButton = $okb
$testform.Controls.Add($okb)
$cb = New-Object System.Windows.Forms.Button
$cb.Location = New-Object System.Drawing.Point(170,130)
$cb.Size = New-Object System.Drawing.Size(75,25)
$cb.Text = 'Remove'
$cb.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$testform.CancelButton = $cb
$testform.Controls.Add($cb)
$test = New-Object System.Windows.Forms.Button
$test.Location = New-Object System.Drawing.Point(270,130)
$test.Size = New-Object System.Drawing.Size(75,25)
$test.Text = 'close'
$test.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$testform.AcceptButton = $test
$testform.Controls.Add($test)
$lb = New-Object System.Windows.Forms.Label
$lb.Location = New-Object System.Drawing.Point(20,40)
$lb.Size = New-Object System.Drawing.Size(240,20)
$lb.Text = 'Please enter the information in text box:'
$testform.Controls.Add($lb)
$tb = New-Object System.Windows.Forms.TextBox
$tb.Location = New-Object System.Drawing.Point(40,80)
$tb.Size = New-Object System.Drawing.Size(240,20)
$testform.Controls.Add($tb)
$testform.Topmost = $true
$testform.Add_Shown({$tb.Select()})
$rs = $testform.ShowDialog()
if ($rs -eq [System.Windows.Forms.DialogResult]::OK)
{
$y = $tb.Text
Write-Host "Entered text is" -ForegroundColor Green
$y
}

Salida:

Ejemplo #4: Solicitar información del usuario mediante un cuadro de diálogo

Entrada:

$yeah = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes","Description."
$nah = New-Object System.Management.Automation.Host.ChoiceDescription "&No","Description."
$abort = New-Object System.Management.Automation.Host.ChoiceDescription "&Cancel","Description."
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yeah, $nah, $abort)
$heading = "Demo"
$mess = "are you sure you want to continue?"
$rslt = $host.ui.PromptForChoice($heading, $mess, $options, 1)
switch ($rslt) {
0{
Write-Host "Yes" -ForegroundColor Green
}1{
Write-Host "No" -ForegroundColor Red
}2{
Write-Host "Cancel" -ForegroundColor Red
}
}
$mess = "are you satisfied with out service?"
$rslt = $host.ui.PromptForChoice($heading, $mess, $options, 1)
switch ($rslt) {
0{
Write-Host "Yes" -ForegroundColor Green
}1{
Write-Host "No" -ForegroundColor Red
}2{
Write-Host "Cancel" -ForegroundColor Red
}
}
$mess = "are you sure you want to exit?"
$rslt = $host.ui.PromptForChoice($heading, $mess, $options, 1)
switch ($rslt) {
0{
Write-Host "Yes" -ForegroundColor Green
}1{
Write-Host "No" -ForegroundColor Red
}2{
Write-Host "Cancel" -ForegroundColor Red
}
}

Salida:

Ejemplo #5

Entrada:

Write-Host "Demo of getting confirmation along with prompt from user"
$question1 = Read-Host "do you want to continue"
if ($question1 -eq 'y') {
Write-Host "answer provided is yes" -ForegroundColor Green
}
else
{
Write-Host "answer provided is no" -ForegroundColor Red
}
$question2 = Read-Host "are you a human"
if ($question2 -eq 'y') {
Write-Host "yes, human" -ForegroundColor Green
}
else
{
Write-Host "not a human" -ForegroundColor Red
}
$question33 = Read-Host "do you believe in god"
if ($question1 -eq 'y') {
Write-Host "yes I believe in god" -ForegroundColor Green
}
else
{
Write-Host "no I dont believe in god" -ForegroundColor Red
}

Salida:

Ejemplo #6

Obtener múltiples entradas de los usuarios mediante el aviso

Entrada:

Write-Host "Demo of getting multiple inputs from user" -ForegroundColor Green
$ainp = @()
do {
$ips = Read-Host -Prompt "Enter ur name"
if ($ips -ne '') {$ainp += $ips}
}
until ($ips -eq 'end')
Write-Host "Entered names are" -ForegroundColor Green
$ainp
Write-Host "Demo of getting multiple user input without loop"
$dummy = "`n"
[string[]] $nl= @()
$nl = READ-HOST -Prompt "enter the names separated by comma"
$nl = $nl.Split(',').Split(' ')
Write-Host "Entered values are" -ForegroundColor Green
$dummy + $nl

Salida:

Conclusión

Por lo tanto, el artículo cubrió en detalle cómo solicitar la entrada del usuario en PowerShell. Además de explicar los distintos enfoques, proporciona ejemplos valiosos. Mostró múltiples formas de obtener entradas en un formato seguro y GUI. También explicó cómo obtener múltiples valores de entrada de usuarios con y sin bucle. Para conocer más detalles, es recomendable escribir y practicar guiones de muestra.

Artículos relacionados