Condividi tramite


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.