Usare il cmdlet Read-Host negli script di Windows PowerShell
È possibile usare il cmdlet Read-Host per ottenere input dagli utenti durante l'esecuzione di uno script. La richiesta di input dell'utente potrebbe essere una richiesta di avviare lo script o potrebbe essere basata sui risultati dell'elaborazione già effettuata nello script. Ad esempio, dopo l'esecuzione di una query per trovare gli oggetti utente di Active Directory Domain Services (AD DS) e la visualizzazione del numero di oggetti recuperati, lo script potrebbe richiedere di decidere se continuare o arrestare l'elaborazione. In alternativa, lo script potrebbe richiedere l'ID evento specifico da ricercare. La sintassi per il cmdlet Read-Host è:
$answer = Read-Host "How many days"
L'esempio precedente arresta l'elaborazione dello script e invia all'utente una richiesta con il testo seguente:
How many days:
Al prompt, l'utente immette una risposta e quindi seleziona INVIO. La risposta fornita dall'utente viene inserita nella variabile $answer.
Alla fine del testo visualizzato con l'uso di Read-Host, vengono sempre aggiunti due punti (:). Non esistono parametri per eliminare il comportamento. Tuttavia, se si usa Read-Host senza visualizzare testo, i due punti non vengono visualizzati. È possibile combinare un comando Write-Host con Read-Host per visualizzare il testo ed evitare l'aggiunta di due punti, come illustrato nell'esempio seguente:
Write-Host "How many days? " -NoNewline
$answer = Read-Host
Nota
L'input di Read-Host è limitato a 1022 caratteri.
È possibile mascherare l'input immesso dagli utenti al prompt usando i parametri -MaskInput o -AsSecureString. Con entrambi i parametri, i caratteri immessi dall'utente vengono visualizzati come asterischi (*). Quando si usa -MaskInput, la risposta viene raccolta come oggetto String. Quando si usa -AsSecureString, la risposta viene raccolta come oggetto SecureString. Un oggetto SecureString è necessario per scenari come l'impostazione delle password, in cui i dati non devono essere archiviati come testo non crittografato in memoria.