Script interattivi di PowerShell con Read-Host: Una guida completa

Utilizzando il cmdlet PowerShell Read-Host, è possibile richiedere interattivamente un input dall’utente dello script. Vediamo alcune applicazioni nel mondo reale su come possiamo utilizzare il cmdlet PowerShell Read-Host.

Richiesta di input con Read-Host

Il cmdlet Read-Host svolge due funzioni in uno script PowerShell; mette in pausa l’esecuzione e riceve l’input. E questo è tutto. Read-Host è un semplice cmdlet, ma è utile quando è necessario ottenere informazioni dall’utente dello script.

Nel modo più semplice, il cmdlet Read-Host richiede semplicemente l’uso del parametro Prompt. Questo parametro Prompt consente di fornire all’utente dello script un’indicazione su cosa inserire. Ad esempio, se lo script richiede un nome di server, si può scegliere di utilizzare Read-Host per chiedere all’utente di inserirlo quando lo script viene eseguito.

Come si può vedere di seguito, eseguendo Read-Host nella console PowerShell stessa utilizzando il parametro Prompt, PowerShell interrompe l’esecuzione e visualizza il messaggio di prompt fornendo all’utente un messaggio esplicativo su ciò che stiamo cercando.

Read-Host PowerShell prompt

Incorporiamo questo in uno script. Ogni volta che un utente inserisce informazioni al prompt, Read-Host restituisce quelle informazioni al codice. È possibile catturare facilmente queste informazioni assegnando l’output a una variabile. Forse vorrei chiedere un nome di server e quindi fare qualcosa con quel nome di server. In caso contrario, vorrei inviare un avviso all’utente per informarlo che ho davvero bisogno di quel nome di server.

$serverName = Read-Host -Prompt 'Server name to process'
if ($serverName) {
    Write-Host "We can now use the server name [$serverName] in our code"
} else {
    Write-Warning -Message "No server name input."
}

Usando una semplice struttura if/then, posso essere sicuro che l’utente inserisca un nome server. Una volta fatto ciò, posso catturarlo e fare qualcosa con esso, altrimenti inviare un messaggio di avviso.

Warning when no input

Richiesta di Password

Dovresti sapere che non è una buona idea memorizzare le password in chiaro nei tuoi script. Allo stesso modo, non è mai una buona idea avere le password memorizzate in chiaro anche in memoria. Per risolvere questo problema, PowerShell ha un concetto chiamato “secure string”, che è una semplice stringa criptata.

A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host? The Read-Host cmdlet has an AsSecureString parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!

Supponiamo che io abbia un segreto profondo e oscuro che non voglio che nessuno sappia, ma devo passare questa password a qualche tipo di software. Puoi vedere di seguito che quando non uso AsSecureString, mi hai scoperto! Tuttavia, se uso AsSecureString, il mio segreto è al sicuro poiché ogni carattere che digito viene sostituito da un asterisco e l’output viene salvato come secure string invece di una stringa in chiaro.

Accepting secure input with Read-Host

Per fare riferimento alla documentazione di Read-Host, consulta la Microsoft Docs.

Source:
https://adamtheautomator.com/read-host/