Read-Host
Legge una riga di input dalla console.
Sintassi
AsString (impostazione predefinita).
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
AsSecureString
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Descrizione
Il cmdlet Read-Host legge una riga di input dalla console (stdin). È possibile usarlo per richiedere input a un utente. Poiché è possibile salvare l'input come stringa sicura, è possibile usare questo cmdlet per richiedere agli utenti dati sicuri, ad esempio le password.
Annotazioni
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 INVIO, il valore viene archiviato nella variabile $Age.
$Age = Read-Host "Please enter your age"
Esempio 2: Salvare l'input della console come stringa sicura
In questo esempio viene visualizzata la stringa "Enter a Password:" come richiesta. Quando viene immesso un valore, gli asterischi (*) vengono visualizzati nella console al posto dell'input. Quando si preme invio, il valore viene archiviato come oggetto SecureString nella variabile $pwd_secure_string.
$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 "Enter a Password:" come richiesta. Quando viene immesso un valore, gli asterischi (*) vengono visualizzati nella console al posto dell'input. Quando si preme invio, il valore viene archiviato come testo non crittografato oggetto String nella variabile $pwd_string.
$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 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.
L'esempio mostra 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 -split per convertire la 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 metodo Trim() rimuove gli spazi iniziali e finali da ogni stringa.
Parametri
-AsSecureString
Indica che il cmdlet visualizza gli asterischi (*) al posto dei caratteri digitati dall'utente come input. Quando si usa questo parametro, l'output del cmdlet Read-Host è un oggetto SecureString (System.Security.SecureString).
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
AsSecureString
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-MaskInput
Indica che il cmdlet visualizza gli asterischi (*) al posto dei caratteri digitati dall'utente come input. Quando si usa questo parametro, l'output del cmdlet Read-Host è 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.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
AsString
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Prompt
Specifica il testo del prompt. Digitare una stringa. Se la stringa include spazi, racchiuderla tra virgolette. PowerShell aggiunge due punti (:) al testo immesso.
Proprietà dei parametri
| Tipo: | Object |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 0 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
None
Gli oggetti non possono essere inviati tramite pipe a questo cmdlet.
Output
String
Per impostazione predefinita, questo cmdlet restituisce una stringa.
SecureString
Quando si usa parametro AsSecureString, questo cmdlet restituisce un SecureString.
Note
Questo cmdlet legge solo dal flusso stdin del processo host. In genere, il flusso stdin è connesso alla tastiera della console host.