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
このコマンドレットにオブジェクトをパイプすることはできません。
出力
既定では、このコマンドレットは文字列を返します。
AsSecureString パラメーターを使用すると、このコマンドレットは SecureString を返します。
メモ
このコマンドレットは、ホスト プロセスの stdin ストリームからのみ読み取ります。 通常、stdin ストリームはホスト コンソールのキーボードに接続されます。
関連リンク
PowerShell