Delen via


Read-Host

Leest een regel invoer van de console.

Syntaxis

Read-Host
    [[-Prompt] <Object>]
    [-MaskInput]
    [<CommonParameters>]
Read-Host
    [[-Prompt] <Object>]
    [-AsSecureString]
    [<CommonParameters>]

Description

De cmdlet Read-Host 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 een limiet van 1022 tekens heeft 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 variabele $pwd_secure_string.

$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 tekst zonder opmaak tekenreeks object 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 -split 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 methode Trim() 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 cmdlet Read-Host 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. Hierdoor kunt u veilig vragen om een wachtwoord dat als tekst zonder opmaak wordt geretourneerd 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

String

Deze cmdlet retourneert standaard een tekenreeks.

SecureString

Wanneer u 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.