Freigeben über


Read-Host

Liest eine Zeile von Eingabedaten aus der Konsole.

Syntax

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

Beschreibung

Das Read-Host Cmdlet liest eine Eingabezeile aus der Konsole (stdin). Damit kann ein Benutzer zur Eingabe aufgefordert werden. Da Sie die Eingabe als sichere Zeichenfolge speichern können, können Sie dieses Cmdlet verwenden, um Benutzer zur Eingabe sicherer Daten wie Kennwörter aufzufordern.

Hinweis

Read-Host hat eine Beschränkung von 1022 Zeichen, die als Eingabe von einem Benutzer akzeptiert werden kann.

Beispiele

Beispiel 1: Speichern der Konsoleneingabe in einer Variablen

In diesem Beispiel wird die Zeichenfolge "Bitte geben Sie Ihr Alter ein:" als Aufforderung angezeigt. Wenn ein Wert eingegeben und die EINGABETASTE gedrückt wird, wird der Wert in der $Age Variablen gespeichert.

$Age = Read-Host "Please enter your age"

Beispiel 2: Speichern der Konsoleneingabe als sichere Zeichenfolge

In diesem Beispiel wird die Zeichenfolge "Kennwort eingeben:" als Eingabeaufforderung angezeigt. Wenn ein Wert eingegeben wird, werden anstelle der Eingabe Sternchen (*) auf der Konsole angezeigt. Wenn die EINGABETASTE gedrückt wird, wird der Wert als SecureString-Objekt in der $pwd_secure_string Variablen gespeichert.

$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString

Beispiel 3: Maskieren von Eingaben und als Klartextzeichenfolge

In diesem Beispiel wird die Zeichenfolge "Kennwort eingeben:" als Eingabeaufforderung angezeigt. Wenn ein Wert eingegeben wird, werden anstelle der Eingabe Sternchen (*) auf der Konsole angezeigt. Wenn die EINGABETASTE gedrückt wird, wird der Wert als Nur-Text-String-Objekt in der $pwd_string Variablen gespeichert.

$pwd_string = Read-Host "Enter a Password" -MaskInput

Beispiel 4: Normalisieren der Eingabe

In diesem Beispiel wird der Benutzer aufgefordert, eine Liste von Städten einzugeben, die durch Semikolons getrennt sind. Es zeigt den Wert der Zeichenfolge, wie er vom Benutzer eingegeben wurde. Im Beispiel hat der Benutzer Leerzeichen zwischen einigen der Einträge hinzugefügt. Dies kann später im Skript zu einem Fehler führen, bei dem der Code einen genauen Namen erwartet.

Das Beispiel zeigt, wie Sie eine Eingabezeichenfolge ohne zusätzliche Leerzeichen in ein Array von Einträgen konvertieren können.

$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'

Im Beispiel wird der -split -Operator verwendet, um die Eingabezeichenfolge in ein Array von Zeichenfolgen zu konvertieren. Jede Zeichenfolge im Array enthält den Namen einer anderen Stadt. Die geteilten Zeichenfolgen enthalten jedoch zusätzliche Leerzeichen. Die Trim() -Methode entfernt die führenden und nachfolgenden Leerzeichen aus jeder Zeichenfolge.

Parameter

-AsSecureString

Gibt an, dass das Cmdlet Sternchen (*) anstelle der Zeichen anzeigt, die der Benutzer als Eingabe eingibt. Wenn Sie diesen Parameter verwenden, ist die Ausgabe des Read-Host Cmdlets ein SecureString-Objekt (System.Security.SecureString).

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaskInput

Gibt an, dass das Cmdlet Sternchen (*) anstelle der Zeichen anzeigt, die der Benutzer als Eingabe eingibt. Wenn Sie diesen Parameter verwenden, ist die Ausgabe des Read-Host Cmdlets ein String-Objekt . Dadurch können Sie sicher zur Eingabe eines Kennworts auffordern, das anstelle von SecureString als Klartext zurückgegeben wird.

Dieser Parameter wurde in PowerShell 7.1 hinzugefügt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Prompt

Gibt den Text der Eingabeaufforderung an. Geben Sie eine Zeichenfolge ein. Wenn die Zeichenfolge Leerzeichen enthält, müssen Sie sie in Anführungszeichen einschließen. PowerShell fügt einen Doppelpunkt (:) an den eingegebenen Text an.

Type:Object
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet übergeben.

Ausgaben

String

Standardmäßig gibt dieses Cmdlet eine Zeichenfolge zurück.

SecureString

Wenn Sie den AsSecureString-Parameter verwenden, gibt dieses Cmdlet einen SecureString-Wert zurück.

Hinweise

Dieses Cmdlet liest nur aus dem stdin-Stream des Hostprozesses. In der Regel ist der stdin-Stream mit der Tastatur der Hostkonsole verbunden.