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 キーを押すと、値はプレーンテキスト 文字列 オブジェクトとして変数に $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) になります。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaskInput

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Prompt

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

Type:Object
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

None

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

出力

String

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

SecureString

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

メモ

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