Read-Host
Odczytuje wiersz danych wejściowych z konsoli programu .
Składnia
AsString (Domyślna)
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
AsSecureString
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.
Uwaga / Notatka
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: Ukryj dane wejściowe i przedstaw je jako ciąg 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 klawisza Enter wartość jest przechowywana jako obiekt typu String 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 znaków.
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
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
AsSecureString
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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 poprosić o hasło, które jest zwracane jako zwykły tekst zamiast jako SecureString.
Ten parametr został dodany w programie PowerShell 7.1.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
AsString
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Prompt
Określa tekst monitu. Wpisz ciąg znaków. Jeśli ciąg zawiera spacje, należy go ująć w cudzysłów. Program PowerShell dołącza dwukropek (:) do wprowadzonego tekstu.
Właściwości parametru
| Typ: | Object |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | 0 |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
None
Nie można przekazywać obiektów do tego cmdletu.
Dane wyjściowe
String
Domyślnie to polecenie cmdlet zwraca ciąg.
SecureString
Jeśli używasz parametru AsSecureString, to polecenie cmdlet zwraca SecureString.
Uwagi
Ten cmdlet odczytuje tylko ze strumienia stdin procesu hosta. Zwykle strumień stdin jest połączony z klawiaturą konsoli hosta.