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 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
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. 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 doorsluisen naar deze cmdlet.

Uitvoerwaarden

String

Deze cmdlet retourneert standaard een tekenreeks.

SecureString

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.