次の方法で共有


Read-Host

コンソールからの入力行を読み取ります。

構文

Read-Host
    [[-Prompt] <Object>]
    [-MaskInput]
    [<CommonParameters>]
Read-Host
    [[-Prompt] <Object>]
    [-AsSecureString]
    [<CommonParameters>]

説明

Read-Host コマンドレットは、コンソール (stdin) から入力行を読み取ります。 ユーザーに入力を求めるために使用できます。 入力をセキュリティで保護された文字列として保存できるため、このコマンドレットを使用して、パスワードなどのセキュリティで保護されたデータをユーザーに求めることができます。

Note

Read-Host には、ユーザーからの入力として受け入れることができる 1022 文字の制限があります。

例 1: コンソール入力を変数に保存する

次の使用例は、"Please enter your age:" という文字列をプロンプトとして表示します。 値を入力し、Enter キーを押すと、値は $Age 変数に格納されます。

$Age = Read-Host "Please enter your age"

例 2: コンソール入力をセキュリティで保護された文字列として保存する

次の使用例は、"Enter a Password:" という文字列をプロンプトとして表示します。 値を入力すると、入力の代わりにアスタリスク (*) がコンソールに表示されます。 Enter キーを押すと、値は SecureString オブジェクトとして $pwd_secure_string 変数に格納されます。

$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString

例 3: 入力をマスクし、プレーンテキスト文字列として

次の使用例は、"Enter a Password:" という文字列をプロンプトとして表示します。 値を入力すると、入力の代わりにアスタリスク (*) がコンソールに表示されます。 Enter キーを押すと、値はプレーンテキスト String オブジェクトとして $pwd_string 変数に格納されます。

$pwd_string = Read-Host "Enter a Password" -MaskInput

例 4: 入力の正規化

次の使用例は、セミコロンで区切られた都市の一覧を入力するようユーザーに求めます。 ユーザーが入力した文字列の値が表示されます。 この例では、ユーザーはエントリの一部の間にスペースを追加しました。 これにより、コードが正確な名前を想定しているスクリプトの後半でエラーが発生する可能性があります。

この例では、入力文字列を余分なスペースなしでエントリの配列に変換する方法を示します。

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

この例では、 -split 演算子を使用して、入力文字列を文字列の配列に変換します。 配列内の各文字列には、異なる市区町村の名前が含まれています。 ただし、分割文字列には余分なスペースが含まれています。 Trim() メソッドは、各文字列から先頭と末尾のスペースを削除します。

パラメーター

-AsSecureString

ユーザーが入力として入力した文字の代わりに、コマンドレットにアスタリスク (*) が表示されることを示します。 このパラメーターを使用すると、 Read-Host コマンドレットの出力は SecureString オブジェクト (System.Security.SecureString) になります。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-MaskInput

ユーザーが入力として入力した文字の代わりに、コマンドレットにアスタリスク (*) が表示されることを示します。 このパラメーターを使用すると、 Read-Host コマンドレットの出力は String オブジェクトになります。 これにより、 SecureString の代わりにプレーンテキストとして返されるパスワードを安全に要求できます。

このパラメーターは PowerShell 7.1 で追加されました。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Prompt

プロンプトのテキストを指定します。 文字列を入力します。 文字列にスペースが含まれる場合は、二重引用符で囲みます。 PowerShell では、入力したテキストにコロン (:) が追加されます。

型:Object
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

None

このコマンドレットにオブジェクトをパイプすることはできません。

出力

String

既定では、このコマンドレットは文字列を返します。

SecureString

AsSecureString パラメーターを使用すると、このコマンドレットは SecureString を返します。

メモ

このコマンドレットは、ホスト プロセスの stdin ストリームからのみ読み取ります。 通常、stdin ストリームはホスト コンソールのキーボードに接続されます。