PowerShellのRead-Host
コマンドレットは、ユーザーからの入力を受け取るために使用されるコマンドレットです。
このコマンドレットを使用すると、スクリプトの実行中にユーザーにプロンプトを表示して、文字列形式のデータを入力してもらうことができます。
基本構文
Read-Host [[-Prompt] <String>] [-AsSecureString] [<CommonParameters>]
主なオプション
-Prompt
- 入力を求める際に表示するメッセージを指定します。
- 例:
"名前を入力してください:"
などの指示を表示できます。
-AsSecureString
- ユーザー入力を暗号化された形式(
SecureString
)で取得します。 - パスワードや秘密情報を扱う際に便利です。
- ユーザー入力を暗号化された形式(
使用例
基本的な入力を受け取る例
$name = Read-Host -Prompt "名前を入力してください"
Write-Output "こんにちは、$name さん!"
出力例
名前を入力してください: 山田
こんにちは、山田 さん!
「名前を入力してください:」が出力され、「山田」を入力してEnterキーを押下すると、2行目が出力されます。
SecureStringを使用する例
$password = Read-Host -Prompt "パスワードを入力してください" -AsSecureString
Write-Output $password
この場合、入力された値は画面に表示されず、安全に暗号化された形式で保存されます。
既定値を設定する例
既定値を提示し、ユーザーが入力を行わなかった場合にその既定値を使用する例です。
$defaultValue = "既定の値"
$userInput = Read-Host "入力してください(既定値: $defaultValue)"
if ([string]::IsNullOrEmpty($userInput)) {
$userInput = $defaultValue
}
Write-Output "入力された値: $userInput"
$defaultValue
に既定値を設定し、Read-Host
でユーザーに入力を促します。
ユーザーが入力を行わなかった場合、[string]::IsNullOrEmpty
メソッドでチェックし、$userInput
に既定値を代入します。
最終的に、入力された値または既定値が出力されます。
注意点
- 文字列型として受け取る
Read-Host
はデフォルトで文字列として入力を受け取ります。
数値を使いたい場合は型変換が必要です。$number = [int](Read-Host -Prompt "数字を入力してください")
- セキュリティに注意
センシティブな情報を扱う際は、-AsSecureString
を使うべきです。Read-Host
を使う場合は、入力が平文で見えるため注意が必要です。
使いどころ
- インタラクティブなスクリプトで、ユーザーの入力を取得する場合。
- パスワードやAPIキーなどの情報を入力させる場合(
-AsSecureString
使用時)。 - 簡易的な確認・選択をさせる用途としても便利です。
まとめ
PowerShellのRead-Host
コマンドレットは、スクリプト内でユーザー入力を柔軟に受け取るための便利な機能です。本記事で紹介した既定値の設定方法を活用することで、入力がない場合にもスムーズにスクリプトを実行できるようになります。