Udostępnij za pomocą


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 to obiekt SecureString (System.Security.SecureString).

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.