Dela via


Read-Host

Läser en rad med indata från konsolen.

Syntax

Read-Host
    [[-Prompt] <Object>]
    [-MaskInput]
    [<CommonParameters>]
Read-Host
    [[-Prompt] <Object>]
    [-AsSecureString]
    [<CommonParameters>]

Description

Cmdleten Read-Host läser en rad med indata från konsolen (stdin). Du kan använda den för att fråga en användare om indata. Eftersom du kan spara indata som en säker sträng kan du använda den här cmdleten för att be användarna om säkra data, till exempel lösenord.

Kommentar

Read-Host har en gräns på 1 022 tecken som kan accepteras som indata från en användare.

Exempel

Exempel 1: Spara konsolindata till en variabel

I det här exemplet visas strängen "Ange din ålder:" som en uppmaning. När ett värde anges och Retur-tangenten trycks på lagras värdet i variabeln $Age .

$Age = Read-Host "Please enter your age"

Exempel 2: Spara konsolindata som en säker sträng

I det här exemplet visas strängen "Ange ett lösenord:" som en uppmaning. När ett värde anges visas asterisker (*) i konsolen i stället för indata. När returnyckeln trycks in lagras värdet som ett SecureString-objekt i variabeln $pwd_secure_string .

$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString

Exempel 3: Maskera indata och som en klartextsträng

I det här exemplet visas strängen "Ange ett lösenord:" som en uppmaning. När ett värde anges visas asterisker (*) i konsolen i stället för indata. När returnyckeln trycks in lagras värdet som ett strängobjekt i klartext i variabeln$pwd_string.

$pwd_string = Read-Host "Enter a Password" -MaskInput

Exempel 4: Normalisera indata

I det här exemplet uppmanas användaren att ange en lista över städer avgränsade med semikolon. Den visar strängens värde enligt användarens skrivning. I exemplet har användaren lagt till blanksteg mellan några av posterna. Detta kan leda till ett fel senare i skriptet där koden förväntar sig ett exakt namn.

Exemplet visar hur du kan konvertera en indatasträng till en matris med poster utan extra blanksteg.

$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'

I exemplet används operatorn -split för att konvertera indatasträngen till en matris med strängar. Varje sträng i matrisen innehåller namnet på en annan stad. De delade strängarna innehåller dock extra blanksteg. Metoden Trim() tar bort inledande och avslutande blanksteg från varje sträng.

Parametrar

-AsSecureString

Anger att cmdleten visar asterisker (*) i stället för de tecken som användaren skriver som indata. När du använder den här parametern är utdata från cmdleten Read-Host ett SecureString-objekt (System.Security.SecureString).

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaskInput

Anger att cmdleten visar asterisker (*) i stället för de tecken som användaren skriver som indata. När du använder den här parametern är utdata från cmdleten Read-Host ett Strängobjekt . På så sätt kan du på ett säkert sätt fråga efter ett lösenord som returneras som klartext i stället för SecureString.

Den här parametern lades till i PowerShell 7.1.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Prompt

Anger texten i prompten. Skriv en sträng. Om strängen innehåller blanksteg omger du den inom citattecken. PowerShell lägger till ett kolon (:) i texten som du anger.

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

Indata

None

Du kan inte skicka objekt till den här cmdleten.

Utdata

String

Som standard returnerar den här cmdleten en sträng.

SecureString

När du använder parametern AsSecureString returnerar den här cmdleten en SecureString.

Kommentarer

Den här cmdleten läser bara från stdin-strömmen i värdprocessen. Vanligtvis är stdin-strömmen ansluten till tangentbordet i värdkonsolen.