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 le 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 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 "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 $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 "Enter a Password:" come richiesta. Quando viene immesso un valore, gli asterischi (*) vengono visualizzati nella console al posto dell'input. Quando si preme 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 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 Trim() metodo 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 Read-Host 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 gli asterischi (*) al posto dei caratteri digitati dall'utente come input. Quando si usa questo parametro, l'output del Read-Host 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 due punti (:) al testo immesso.

Type:Object
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

None

Non è possibile inviare tramite pipe 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.