Condividi tramite


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

String

Per impostazione predefinita, questo cmdlet restituisce una stringa.

SecureString

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.