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 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

String

Domyślnie to polecenie cmdlet zwraca ciąg.

SecureString

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.