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 Read-Host
cmdlet 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.
Uwaga
Read-Host
ma limit 1022 znaków, który 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 -split
operatora , 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życia tego parametru Read-Host
dane wyjściowe polecenia cmdlet 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 Read-Host
dane wyjściowe polecenia cmdlet są obiektem 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 wartość SecureString.
Uwagi
To polecenie cmdlet odczytuje tylko ze strumienia stdin procesu hosta. Zwykle strumień stdin jest połączony z klawiaturą konsoli hosta.