Read-Host
Läser en rad med indata från konsolen.
Syntax
AsString (Standard)
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
AsSecureString
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.
Anmärkning
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).
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
AsSecureString
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | 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.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
AsString
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | 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.
Parameteregenskaper
| Typ: | Object |
| Standardvärde: | None |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 0 |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
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.