Read-Host
Leest een regel invoer van de console.
Syntaxis
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Description
De Read-Host
cmdlet leest een regel invoer uit de console (stdin). U kunt deze gebruiken om een gebruiker om invoer te vragen. Omdat u de invoer kunt opslaan als een beveiligde tekenreeks, kunt u deze cmdlet gebruiken om gebruikers te vragen om beveiligde gegevens, zoals wachtwoorden.
Notitie
Read-Host
heeft een limiet van 1022 tekens die kan worden geaccepteerd als invoer van een gebruiker.
Voorbeelden
Voorbeeld 1: Console-invoer opslaan in een variabele
In dit voorbeeld wordt de tekenreeks 'Geef uw leeftijd op:' weergegeven als een prompt. Wanneer een waarde wordt ingevoerd en de Enter-toets wordt ingedrukt, wordt de waarde opgeslagen in de $Age
variabele.
$Age = Read-Host "Please enter your age"
Voorbeeld 2: Console-invoer opslaan als een beveiligde tekenreeks
In dit voorbeeld wordt de tekenreeks 'Een wachtwoord invoeren:' weergegeven als een prompt. Als een waarde wordt ingevoerd, worden sterretjes (*
) weergegeven op de console in plaats van de invoer. Wanneer de Enter-toets wordt ingedrukt, wordt de waarde opgeslagen als een SecureString-object in de $pwd_secure_string
variabele.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Voorbeeld 3: Invoer maskeren en als een tekenreeks zonder opmaak
In dit voorbeeld wordt de tekenreeks 'Een wachtwoord invoeren:' weergegeven als een prompt. Als een waarde wordt ingevoerd, worden sterretjes (*
) weergegeven op de console in plaats van de invoer. Wanneer de Enter-toets wordt ingedrukt, wordt de waarde opgeslagen als een tekenreeksobject zonder opmaak in de $pwd_string
variabele.
$pwd_string = Read-Host "Enter a Password" -MaskInput
Voorbeeld 4: Invoer normaliseren
In dit voorbeeld wordt de gebruiker gevraagd een lijst met steden in te voeren, gescheiden door puntkomma's. De waarde van de tekenreeks wordt weergegeven zoals getypt door de gebruiker. In het voorbeeld heeft de gebruiker spaties toegevoegd tussen een aantal vermeldingen. Dit kan later in het script leiden tot een fout waarbij de code een exacte naam verwacht.
In het voorbeeld ziet u hoe u een invoertekenreeks kunt converteren naar een matrix met vermeldingen zonder extra spaties.
$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'
In het voorbeeld wordt de operator gebruikt om de -split
invoertekenreeks te converteren naar een matrix met tekenreeksen. Elke tekenreeks in de matrix bevat de naam van een andere plaats. De gesplitste tekenreeksen bevatten echter extra spaties. Met Trim()
de methode worden de voorloop- en volgspaties uit elke tekenreeks verwijderd.
Parameters
-AsSecureString
Geeft aan dat de cmdlet sterretjes (*
) weergeeft in plaats van de tekens die de gebruiker als invoer typt. Wanneer u deze parameter gebruikt, is de uitvoer van de Read-Host
cmdlet een SecureString-object (System.Security.SecureString).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-MaskInput
Geeft aan dat de cmdlet sterretjes (*
) weergeeft in plaats van de tekens die de gebruiker als invoer typt. Wanneer u deze parameter gebruikt, is de uitvoer van de Read-Host
cmdlet een tekenreeksobject .
Hiermee kunt u veilig vragen om een wachtwoord dat wordt geretourneerd als tekst zonder opmaak in plaats van SecureString.
Deze parameter is toegevoegd in PowerShell 7.1.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Prompt
Hiermee geeft u de tekst van de prompt. Typ een tekenreeks. Als de tekenreeks spaties bevat, plaatst u deze tussen aanhalingstekens. PowerShell voegt een dubbele punt (:
) toe aan de tekst die u invoert.
Type: | Object |
Position: | 0 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
None
U kunt geen objecten doorsluisen naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert standaard een tekenreeks.
Wanneer u de parameter AsSecureString gebruikt, retourneert deze cmdlet een SecureString.
Notities
Deze cmdlet leest alleen uit de stdin-stroom van het hostproces. Meestal is de stdin-stream verbonden met het toetsenbord van de hostconsole.