Read-Host
Legge una riga di input dalla console.
Sintassi
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Descrizione
Il Read-Host
cmdlet legge una riga di input dalla console (stdin). Può essere usato per richiedere l'input a un utente. Poiché è possibile salvare l'input come stringa sicura, è possibile usare questo cmdlet per richiedere agli utenti dati sicuri, ad esempio password.
Nota
Read-Host
ha un limite di 1022 caratteri che può accettare come input da un utente.
Esempio
Esempio 1: Salvare l'input della console in una variabile
In questo esempio viene visualizzata la stringa "Immettere l'età:" come richiesta. Quando viene immesso un valore e viene premuto il tasto INVIO, il valore viene archiviato nella $Age
variabile.
$Age = Read-Host "Please enter your age"
Esempio 2: Salvare l'input della console come stringa sicura
In questo esempio viene visualizzata la stringa "Immettere una password:" come richiesta. Quando viene immesso un valore, gli asterischi (*
) vengono visualizzati nella console al posto dell'input. Quando viene premuto il tasto INVIO, il valore viene archiviato come oggetto SecureString nella $pwd_secure_string
variabile.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Esempio 3: Mascherare l'input e come stringa di testo non crittografato
In questo esempio viene visualizzata la stringa "Immettere una password:" come richiesta. Quando viene immesso un valore, gli asterischi (*
) vengono visualizzati nella console al posto dell'input. Quando viene premuto il tasto INVIO, il valore viene archiviato come oggetto String di testo non crittografato nella $pwd_string
variabile.
$pwd_string = Read-Host "Enter a Password" -MaskInput
Esempio 4: Normalizzazione dell'input
In questo esempio viene richiesto all'utente di immettere un elenco di città separate da punti e virgola. Mostra il valore della stringa come digitato dall'utente. Nell'esempio l'utente ha aggiunto spazi tra alcune voci. Questo potrebbe causare un errore più avanti nello script in cui il codice prevede un nome esatto.
Nell'esempio viene illustrato come convertire una stringa di input in una matrice di voci senza spazi aggiuntivi.
$prompt = @(
'List the cities you want weather information for.'
'When specifying multiple cities, separate them with a semi-colon, like:'
"'New York; Osan; Koforidua'"
) -join ' '
$cities = Read-Host $prompt
"Input cities string: `n`t'$cities'"
$splitCities = $cities -split ';'
"Split cities array:"
$splitCities | ForEach-Object -Process { "`t'$_'" }
$normalizedCities = $splitCities | ForEach-Object -Process { $_.Trim() }
"Normalized split cities array:"
$normalizedCities | ForEach-Object -Process { "`t'$_'" }
Input cities string:
' New York; Osan ;Koforidua '
Split cities array:
' New York'
' Osan '
'Koforidua '
Normalized split cities array:
'New York'
'Osan'
'Koforidua'
Nell'esempio viene usato l'operatore per convertire la -split
stringa di input in una matrice di stringhe. Ogni stringa nella matrice include il nome di una città diversa. Tuttavia, le stringhe di divisione includono spazi aggiuntivi. Il Trim()
metodo rimuove gli spazi iniziali e finali da ogni stringa.
Parametri
-AsSecureString
Indica che il cmdlet visualizza asterischi (*
) al posto dei caratteri che l'utente digita come input. Quando si usa questo parametro, l'output Read-Host
del cmdlet è un oggetto SecureString (System.Security.SecureString).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaskInput
Indica che il cmdlet visualizza asterischi (*
) al posto dei caratteri che l'utente digita come input. Quando si usa questo parametro, l'output Read-Host
del cmdlet è un oggetto String .
In questo modo è possibile richiedere in modo sicuro una password restituita come testo non crittografato anziché SecureString.
Questo parametro è stato aggiunto in PowerShell 7.1.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prompt
Specifica il testo della richiesta. Digitare una stringa. Se la stringa include spazi, racchiuderla tra virgolette. PowerShell aggiunge un punto (:
) al testo immesso.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
None
Non è possibile eseguire la pipe degli oggetti a questo cmdlet.
Output
Per impostazione predefinita, questo cmdlet restituisce una stringa.
Quando si usa il parametro AsSecureString , questo cmdlet restituisce un oggetto SecureString.
Note
Questo cmdlet legge solo dal flusso stdin del processo host. In genere, il flusso stdin è connesso alla tastiera della console host.