Come richiedere l'input dell'utente in PowerShell
-
Usa il
Read-Hostper richiedere input dell’utente in PowerShell -
Usa i parametri
Mandatoryper richiedere input dell’utente in PowerShell -
Usa il
PromptForChoiceper richiedere input dell’utente in PowerShell - Conclusione
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:

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:

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:

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:

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:

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.
