Come richiedere l'input dell'utente in PowerShell

  1. Usa il Read-Host per richiedere input dell’utente in PowerShell
  2. Usa i parametri Mandatory per richiedere input dell’utente in PowerShell
  3. Usa il PromptForChoice per richiedere input dell’utente in PowerShell
  4. Conclusione
Come richiedere l'input dell'utente in PowerShell

Nella scrittura di PowerShell, interagire con gli utenti per raccogliere input è un requisito comune. Che si tratti di personalizzazione, decisioni o navigazione, richiedere input agli utenti è essenziale.

Questo articolo esplora vari metodi per richiedere input dell’utente in PowerShell, incluso il metodo Read-Host, il metodo del parametro Mandatory e il metodo PromptForChoice. Ciascun metodo offre capacità uniche ed è adatto per diversi scenari, migliorando l’interattività e l’usabilità degli script PowerShell.

Usa il Read-Host per richiedere input dell’utente in PowerShell

Il cmdlet Read-Host richiede input dall’utente e legge una riga di input dalla console. Il Read-Host può accettare solo 1022 caratteri come input da un utente.

Il parametro -Prompt viene utilizzato per specificare un testo che fornisca informazioni su cosa inserire. Aggiunge un due punti : al testo che inserisci.

Esempio:

Read-Host -Prompt "Enter your name"

In questo esempio, quando utilizziamo Read-Host, richiede all’utente il messaggio "Inserisci il tuo nome" e poi interrompe l’esecuzione dello script, aspettando l’input. Dopo che l’utente inserisce il proprio nome e preme Enter, lo script continua con l’esecuzione.

Tuttavia, poiché non stiamo catturando o memorizzando l’input in una variabile né eseguendo ulteriori azioni in base all’input ricevuto, questo esempio dimostra principalmente la funzionalità base di Read-Host senza un’ulteriore elaborazione dell’input dell’utente.

Uscita:

richiesta input utente in powershell - output 1

Il Read-Host interrompe l’esecuzione e riceve input. Quando un utente inserisce il valore al prompt, restituisce lo stesso valore.

Non accetta input dalla pipeline di PowerShell. Ecco un altro esempio:

$name = Read-Host "Enter your name"
Write-Output "Hello, $name!"

In questo esempio, utilizziamo Read-Host per chiedere all’utente di inserire il proprio nome. La stringa "Inserisci il tuo nome" funge da messaggio di prompt.

L’input dell’utente è memorizzato nella variabile $name. Utilizziamo poi Write-Output per visualizzare un messaggio di saluto personalizzato, incorporando il valore inserito dall’utente.

Con il cmdlet Read-Host, possiamo salvare l’input come una stringa sicura, rendendolo uno strumento prezioso per raccogliere informazioni sensibili come le password. Questo cmdlet ci consente di richiedere agli utenti dati riservati garantendo confidenzialità e sicurezza.

Uscita:

richiesta di input utente in powershell - output 2

Il parametro -AsSecureString mostra asterischi * al posto dei caratteri che l’utente inserisce come input. Con questo parametro, l’output di Read-Host è un oggetto System.Security.SecureString.

Read-Host "Enter password" -AsSecureString

In questo esempio, utilizziamo Read-Host con il parametro -AsSecureString per chiedere all’utente di inserire una password in modo sicuro. Il messaggio di prompt "Inserisci la password" viene visualizzato all’utente.

Quando l’utente inserisce la password, questa è mascherata sullo schermo, garantendo confidenzialità. La password è quindi memorizzata come una stringa sicura nella variabile $password, pronta per ulteriori elaborazioni o convalide.

Uscita:

richiesta input utente in powershell - uscita 3

Usa i parametri Mandatory per richiedere input dell’utente in PowerShell

In PowerShell, il metodo del parametro Mandatory è un modo potente per richiedere input agli utenti garantendo che determinati parametri siano necessari per l’esecuzione dello script. Contrassegnando i parametri come Mandatory, gli autori degli script possono imporre la fornitura di valori di input essenziali, migliorando così l’affidabilità e l’usabilità dello script.

Ecco un esempio della funzione Name che chiede l’input dell’utente quando viene eseguita.

Esempio:

function Name {
    param(
        [Parameter(Mandatory)]
        [string]$name
    )
    Write-Output "Your name is $name."
}
Name

In questo esempio, definiamo una funzione PowerShell chiamata Name con un parametro singolo chiamato name. Specificando [Parameter(Mandatory)], garantiamo che l’utente debba fornire un valore per il parametro name quando invoca la funzione.

La funzione quindi restituisce un messaggio incorporando il nome fornito utilizzando Write-Output.

Uscita:

richiesta di input dell’utente in powershell - output 4

Usa il PromptForChoice per richiedere input dell’utente in PowerShell

In PowerShell, il metodo PromptForChoice fornisce un modo strutturato per richiedere agli utenti un insieme di opzioni e ricevere la loro scelta come input. Questo metodo è particolarmente utile quando si presentano agli utenti un menu o un elenco di scelte, consentendo un’esperienza di esecuzione dello script più interattiva e user-friendly.

Esempio:

$choicePrompt = "Choose an option:"
$choices = [System.Management.Automation.Host.ChoiceDescription[]]@(
    "&Option 1",
    "&Option 2",
    "&Option 3"
)
$defaultChoice = 0
$result = $host.UI.PromptForChoice("Title", $choicePrompt, $choices, $defaultChoice)
Write-Output "You selected $($choices[$result].Label)"

In questo esempio, definiamo un messaggio di prompt e un array di scelte e specifichiamo l’indice della scelta predefinita. Utilizziamo quindi il metodo PromptForChoice per visualizzare la finestra di dialogo del prompt con le scelte fornite.

La selezione dell’utente è memorizzata nella variabile $result, che utilizziamo per recuperare l’etichetta dell’opzione scelta e visualizzarla all’utente.

Uscita:

richiesta di input dell’utente in powershell - output 5

Conclusione

Richiedere input dell’utente in PowerShell è cruciale per creare script interattivi e user-friendly. Utilizzando metodi come Read-Host, parametri Mandatory e PromptForChoice, gli autori di script possono raccogliere in modo efficiente l’input dell’utente, garantendo al contempo affidabilità e sicurezza.

Che si tratti di raccogliere semplici input testuali, imporre parametri obbligatori o presentare agli utenti un insieme strutturato di scelte, questi metodi permettono agli autori di script di creare soluzioni di automazione robuste e versatili. Comprendendo e sfruttando queste tecniche, gli autori di script PowerShell possono migliorare l’usabilità e l’efficacia dei loro script, soddisfacendo le esigenze diverse di utenti e amministratori.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website