Udostępnij za pośrednictwem


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

String

Domyślnie to polecenie cmdlet zwraca ciąg.

SecureString

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.