Read-Host
Leest een regel invoer van de console.
Syntax
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 kunnen worden geaccepteerd als invoer van een gebruiker.
Voorbeelden
Voorbeeld 1: consoleinvoer 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: Consoleinvoer opslaan als een beveiligde tekenreeks
In dit voorbeeld wordt de tekenreeks 'Een wachtwoord invoeren:' weergegeven als een prompt. Als er een waarde wordt ingevoerd, worden sterretjes (*
) weergegeven op de console in plaats van de invoer. Wanneer op Enter wordt gedrukt, 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 er een waarde wordt ingevoerd, worden sterretjes (*
) weergegeven op de console in plaats van de invoer. Wanneer op Enter wordt gedrukt, 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 plaatsen in te voeren, gescheiden door puntkomma's. De waarde van de tekenreeks wordt weergegeven zoals deze door de gebruiker is getypt. In het voorbeeld heeft de gebruiker spaties toegevoegd tussen enkele vermeldingen. Dit kan leiden tot een fout verderop in het script 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 -split
operator gebruikt om de 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 de Trim()
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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prompt
Hiermee geeft u de tekst van de prompt op. 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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Invoerwaarden
None
U kunt geen objecten doorspezen 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. Normaal gesproken is de stdin-stream verbonden met het toetsenbord van de hostconsole.