Read-Host

Liest eine Zeile von Eingaben aus der Konsole.

Syntax

AsString (Standard)

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

AsSecureString

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

Beschreibung

Das Read-Host Cmdlet liest eine Zeile von Eingaben aus der Konsole (stdin). Sie können ihn verwenden, um einen Benutzer zur Eingabe aufzufordern. Da Sie die Eingabe als sichere Zeichenfolge speichern können, können Sie mit diesem Cmdlet Benutzer zur Eingabe sicherer Daten auffordern, z. B. Kennwörter.

Note

Read-Host hat eine Beschränkung von 1022 Zeichen, die er als Eingabe eines Benutzers akzeptieren kann.

Beispiele

Beispiel 1: Speichern von Konsoleneingaben in einer Variablen

In diesem Beispiel wird die Zeichenfolge "Bitte ihr Alter eingeben:" als Eingabeaufforderung 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 von Konsoleneingaben als sichere Zeichenfolge

In diesem Beispiel wird die Zeichenfolge "Kennwort eingeben:" als Eingabeaufforderung angezeigt. Wenn ein Wert eingegeben wird, werden Sternchen (*) anstelle der Eingabe 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 Nur-Text-Zeichenfolge

In diesem Beispiel wird die Zeichenfolge "Kennwort eingeben:" als Eingabeaufforderung angezeigt. Wenn ein Wert eingegeben wird, werden Sternchen (*) anstelle der Eingabe 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 durch Semikolons getrennte Liste von Städten einzugeben. Er zeigt den Wert der Zeichenfolge an, wie sie vom Benutzer eingegeben wurde. Im Beispiel hat der Benutzer Leerzeichen zwischen einigen einträgen 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 nachgestellten Leerzeichen aus jeder Zeichenfolge.

Parameter

-AsSecureString

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

AsSecureString
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-MaskInput

Gibt an, dass das Cmdlet anstelle der Zeichen, die der Benutzer als Eingabe eingibt, Sternchen (*) anzeigt. Wenn Sie diesen Parameter verwenden, ist die Ausgabe des Read-Host Cmdlets ein String-Objekt . Auf diese Weise können Sie sicher ein Kennwort anfordern, das anstelle von SecureString als Nur-Text zurückgegeben wird.

Dieser Parameter wurde in PowerShell 7.1 hinzugefügt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

AsString
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Prompt

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

Parametereigenschaften

Typ:Object
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

String

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

SecureString

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

Hinweise

Dieses Cmdlet liest nur aus dem Stdin-Datenstrom des Hostprozesses. Normalerweise ist der Stdin-Datenstrom mit der Tastatur der Hostkonsole verbunden.