スポンサーリンク

【PowerShell】ユーザー入力を簡単に処理~Read-Hostの便利な使い方~

記事内に広告が含まれています。

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コマンドレットは、スクリプト内でユーザー入力を柔軟に受け取るための便利な機能です。本記事で紹介した既定値の設定方法を活用することで、入力がない場合にもスムーズにスクリプトを実行できるようになります。

タイトルとURLをコピーしました