Read-Host
Liest eine Zeile von Eingaben aus der Konsole.
Syntax
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Beschreibung
Das cmdlet Read-Host
liest eine Eingabezeile 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.
Anmerkung
Read-Host
maximal 8190 Zeichen enthält, kann sie als Eingabe eines Benutzers akzeptieren.
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 wird und die EINGABETASTE gedrückt wird, wird der Wert in der variablen $Age
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 variablen $pwd_secure_string
gespeichert.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Beispiel 3: 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 operator -split
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. Mit der Trim()
-Methode werden die führenden und nachgestellten Leerzeichen aus jeder Zeichenfolge entfernt.
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 cmdlets Read-Host
ein SecureString- -Objekt (System.Security.SecureString).
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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.
Typ: | Object |
Position: | 0 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None
Sie können keine Objekte an dieses Cmdlet weiterleiten.
Ausgaben
Standardmäßig gibt dieses Cmdlet eine Zeichenfolge zurück.
Wenn Sie AsSecureString Parameter verwenden, gibt dieses Cmdlet ein SecureString-zurück.
Hinweise
Dieses Cmdlet liest nur aus dem Stdin-Datenstrom des Hostprozesses. Normalerweise ist der Stdin-Datenstrom mit der Tastatur der Hostkonsole verbunden.