[登録されているタグ]

[記事公開日]2025/12/18

PowerShellで入力を受け取る|Read-Hostの使い方

📝 はじめに

PowerShellでスクリプトを作っていて、
「実行時にユーザーへ入力を求めたい」
「毎回スクリプトを書き換えずに値を指定したい」
と感じたことはありませんか?

そんな場面で活躍するのが
Read-Host です。
実行中に入力を受け取り、その値を後続処理で使えるため、
対話型のスクリプトを簡単に作れます。

こんな場面で便利

  • 処理対象のパスやファイル名を都度入力したい
  • ユーザーに確認しながら処理を進めたい
  • 同じスクリプトを複数用途で使い回したい

✅ このコマンドでできること(要点)

  • 実行時にユーザーから文字入力を受け取れる
  • 入力内容を変数として扱える
  • 表示するメッセージを自由に指定できる
  • 簡単な対話型スクリプトを作れる

✅ Read-Host でできること

Read-Host は、
PowerShell実行中にユーザーへ入力を促し、
その入力値を文字列として受け取るためのコマンドです。

バッチ処理のように固定値で動かすのではなく、
実行する人が値を決める仕組みを簡単に組み込めます。

考え方としては、「実行中に質問して答えを受け取る」イメージです。

🧩 基本構文

$value = Read-Host "表示するメッセージ"

入力された内容は、指定した変数に文字列として格納されます。

▶ 基本的な使い方(まずこれだけ)

🔹 文字列を入力して受け取る

$name = Read-Host "名前を入力してください"
$name

入力した文字列がそのまま表示されれば、正しく受け取れています。
この結果が表示されていれば問題ありません。

🔹 パスを入力して処理に使う

$path = Read-Host "処理したいパスを入力してください"
Test-Path $path

入力したパスに応じて True / False が表示されます。
エラーが出なければ正常に実行できています。

🛠 よく使われる指定例

🔹 入力値を条件分岐に使う

$answer = Read-Host "続行しますか? (y/n)"

if ($answer -eq "y") {
    "処理を続行します"
} else {
    "処理を中止します"
}

🔹 数値として扱う

$num = Read-Host "数値を入力してください"
[int]$num + 10

Read-Host の戻り値は文字列のため、
数値として使う場合は型変換します。

💼 実務でよく使う使用例(応用)

🔹 フォルダを指定してファイル一覧を表示

$dir = Read-Host "フォルダパスを入力してください"
Get-ChildItem $dir

🔹 ユーザー名を入力してログに記録

$user = Read-Host "ユーザー名を入力してください"
"$user が処理を実行しました" | Out-File log.txt -Append
組み合わせ例

  • Test-Path と併用して入力値を検証
  • Get-ChildItem と組み合わせて対象指定
  • Out-File で入力内容をログ化

🧩 よくある勘違い・つまずきポイント

  • 入力値は自動的に数値にはならない
  • 何も入力しないと空文字になる
  • 改行や空白もそのまま含まれる
  • パス入力時の全角文字に注意が必要
  • 非対話環境では使えない場合がある

🔄 cmdとの違いについて

cmdでは set /p を使って入力を受け取りますが、
PowerShellの Read-Host
より直感的で、変数との連携も簡単です。

PowerShellでは、そのまま他のコマンドに渡せる点が大きな違いです。

⚠ エラー・うまく動かないときの確認ポイント

  • 対話入力が許可されている環境か
  • 入力値が想定どおりの形式か
  • 数値処理で型変換を忘れていないか
  • 空入力時の処理を考慮しているか

🧠 注意点

自動化を目的としたスクリプトでは、
Read-Host を使うと処理が止まるため注意が必要です。
対話が必要な場面に限定して使うのがおすすめです。

📌 まとめ

  • Read-Host は実行時に入力を受け取るための基本コマンド
  • 入力値は文字列として変数に格納される
  • 条件分岐やファイル操作と組み合わせやすい
  • 次は param を使った引数指定も試すと理解が深まる

🔎 PowerShellコマンドを探す

やりたいことからコマンドを探すこともできます。

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • ユーザー入力で処理を分けたい
  • 対話型スクリプトを作りたい
Generic filters

サイト内検索(入力すると候補が出ます)

Generic filters


Generic filters

Generic filters

すべてを開く | すべてを閉じる
ページ上部へ戻る