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.
Not
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 returnyckeln trycks in 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 en oformaterad String-objekt 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).
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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 String-objekt.
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.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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.
Typ: | Object |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka objekt till den här cmdleten.
Utdata
Som standard returnerar den här cmdleten en sträng.
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.