次の方法で共有


Read-Host

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

構文

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

説明

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

注意

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

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

次の使用例は、"年齢を入力してください:" という文字列をプロンプトとして表示します。 値を入力し、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) になります。

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

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

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

入力

None

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

出力

String

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

SecureString

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

メモ

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