Read-Host
Odczytuje wiersz danych wejściowych z konsoli programu .
Składnia
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Opis
Polecenie cmdlet Read-Host
odczytuje wiersz danych wejściowych z konsoli (stdin). Można go użyć, aby wyświetlić monit o podanie danych wejściowych przez użytkownika. Ponieważ dane wejściowe można zapisać jako bezpieczny ciąg, możesz użyć tego polecenia cmdlet, aby monitować użytkowników o bezpieczne dane, takie jak hasła.
Nuta
Read-Host
ma limit 1022 znaków, które może zaakceptować jako dane wejściowe od użytkownika.
Przykłady
Przykład 1. Zapisywanie danych wejściowych konsoli w zmiennej
W tym przykładzie zostanie wyświetlony ciąg "Wprowadź wiek:" jako monit. Po wprowadzeniu wartości i naciśnięciu Enter wartość jest przechowywana w zmiennej $Age
.
$Age = Read-Host "Please enter your age"
Przykład 2. Zapisywanie danych wejściowych konsoli jako bezpiecznego ciągu
W tym przykładzie zostanie wyświetlony ciąg "Wprowadź hasło:" jako monit. W miarę wprowadzania wartości gwiazdki (*
) są wyświetlane w konsoli zamiast danych wejściowych. Po naciśnięciu Enter wartość jest przechowywana jako obiekt SecureString w zmiennej $pwd_secure_string
.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Przykład 3. Maskuj dane wejściowe i jako ciąg w postaci zwykłego tekstu
W tym przykładzie zostanie wyświetlony ciąg "Wprowadź hasło:" jako monit. W miarę wprowadzania wartości gwiazdki (*
) są wyświetlane w konsoli zamiast danych wejściowych. Po naciśnięciu Enter wartość jest przechowywana jako obiekt ciągu w postaci zwykłego tekstu w zmiennej $pwd_string
.
$pwd_string = Read-Host "Enter a Password" -MaskInput
Przykład 4. Normalizacja danych wejściowych
W tym przykładzie zostanie wyświetlony monit o wprowadzenie listy miast rozdzielonych średnikami. Pokazuje wartość ciągu w postaci typizowanej przez użytkownika. W tym przykładzie użytkownik dodał spacje między niektórymi wpisami. Może to prowadzić do błędu w dalszej części skryptu, w którym kod oczekuje dokładnej nazwy.
W przykładzie pokazano, jak można przekonwertować ciąg wejściowy na tablicę wpisów bez dodatkowych spacji.
$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'
W przykładzie użyto operatora -split
, aby przekonwertować ciąg wejściowy na tablicę ciągów. Każdy ciąg w tablicy zawiera nazwę innego miasta. Jednak podzielone ciągi zawierają dodatkowe spacje. Metoda Trim()
usuwa spacje wiodące i końcowe z każdego ciągu.
Parametry
-AsSecureString
Wskazuje, że polecenie cmdlet wyświetla gwiazdki (*
) zamiast znaków, które użytkownik wpisze jako dane wejściowe. W przypadku używania tego parametru dane wyjściowe polecenia cmdlet Read-Host
to obiekt SecureString (System.Security.SecureString).
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-MaskInput
Wskazuje, że polecenie cmdlet wyświetla gwiazdki (*
) zamiast znaków, które użytkownik wpisze jako dane wejściowe. W przypadku użycia tego parametru dane wyjściowe polecenia cmdlet Read-Host
to obiekt string.
Dzięki temu można bezpiecznie monitować o hasło, które jest zwracane jako zwykły tekst zamiast SecureString.
Ten parametr został dodany w programie PowerShell 7.1.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Prompt
Określa tekst monitu. Wpisz ciąg. Jeśli ciąg zawiera spacje, należy go ująć w cudzysłów. Program PowerShell dołącza dwukropek (:
) do wprowadzonego tekstu.
Typ: | Object |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
None
Nie można potokować obiektów do tego polecenia cmdlet.
Dane wyjściowe
Domyślnie to polecenie cmdlet zwraca ciąg.
Jeśli używasz parametru AsSecureString, to polecenie cmdlet zwraca SecureString.
Uwagi
To polecenie cmdlet odczytuje tylko ze strumienia stdin procesu hosta. Zwykle strumień stdin jest połączony z klawiaturą konsoli hosta.