HOWTO · PowerShell

Come richiedere l'input dell'utente in PowerShell

Questo tutorial ti insegnerà il comando per 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.