Windows PowerShellで「入力待ち」状態を作る方法|初心者向け解説

パソコンパソコン・スマホ教室
スポンサーリンク

PowerShellを使ってスクリプトを作成していると、「処理を一時停止して、ユーザーの入力を待ちたい」と思うことがあるかもしれません。たとえば、重要な操作の前に確認を求めたり、次の処理に進む前にユーザーの指示を仰いだりする場面です。そんなときに役立つのが、PowerShellでの「入力待ち」の実現方法です。

本記事では、PowerShell初心者の方でもわかりやすいように、実際のコード例とともに解説します。

スポンサーリンク

PowerShellでの入力待ちの基本

Windowsのイメージ

Windowsのイメージ

PowerShellでユーザーからの入力を受け付けるには、主に2つの方法があります。

1.1 Read-Hostを使う方法

最も基本的な方法は、`Read-Host`コマンドレットを使うことです。これを使うと、ユーザーからの入力を受け付けることができます。

例えば、以下のように記述します。

$name = Read-Host "お名前を入力してください"
Write-Host "こんにちは、$name さん!"

このスクリプトを実行すると、「お名前を入力してください」と表示され、ユーザーが入力した名前が変数`$name`に格納されます。その後、「こんにちは、\ さん!」と表示されます。

1.2 ReadKeyを使う方法

もう一つの方法は、`::ReadKey()`メソッドを使うことです。これを使うと、ユーザーが何かしらのキーを押すまで処理を一時停止させることができます。

以下のように記述します。

Write-Host "続行するには任意のキーを押してください..."
::ReadKey() | Out-Null

このスクリプトを実行すると、「続行するには任意のキーを押してください…」と表示され、ユーザーが任意のキーを押すまで処理が停止します。

よく使われる「入力待ち」の活用例

実際のシナリオでよく使われる「入力待ち」の活用例をいくつか紹介します。

2.1 操作の確認を求める

重要な操作を行う前に、ユーザーに確認を求める場面です。

$confirmation = Read-Host "本当に実行してもよろしいですか? (y/n)"
if ($confirmation -eq 'y') {
Write-Host "操作を実行します。"
} else {
Write-Host "操作をキャンセルしました。"
}

このスクリプトでは、ユーザーに「本当に実行してもよろしいですか? (y/n)」と尋ね、’y’と入力された場合に操作を実行し、それ以外の場合はキャンセルします。

2.2 処理の進行を待つ

処理の途中でユーザーの入力を待つ場面です。

Write-Host "処理を開始します。"
Start-Sleep -Seconds 5
Write-Host "5秒待機しました。続行するには任意のキーを押してください..."
::ReadKey() | Out-Null
Write-Host "処理を再開します。"

このスクリプトでは、処理を開始し、5秒間待機した後、「続行するには任意のキーを押してください…」と表示され、ユーザーが任意のキーを押すまで処理が停止します。

よくある質問とその回答

Q1: Read-HostとReadKeyの違いは何ですか?

`Read-Host`は、ユーザーからの文字列入力を受け付けるコマンドレットです。一方、`::ReadKey()`は、ユーザーが何かしらのキーを押すまで処理を一時停止させるメソッドです。用途に応じて使い分けることができます。

Q2: Read-Hostで入力されたパスワードを安全に扱う方法はありますか?

はい、`Read-Host`に`-AsSecureString`パラメータを追加することで、入力されたパスワードを安全に扱うことができます。

$password = Read-Host "パスワードを入力してください" -AsSecureString

このように記述すると、入力されたパスワードはセキュアな形式で変数`$password`に格納されます。

Q3: ReadKeyを使うと、どのキーでも入力待ちになりますか?

はい、`::ReadKey()`を使うと、ユーザーが何かしらのキーを押すまで処理が一時停止します。ただし、Shift、Ctrl、Altなどの修飾キーは無視されるため、注意が必要です。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめと次のステップ

PowerShellでの「入力待ち」の方法について、基本的な使い方と活用例を紹介しました。これらの方法を使うことで、ユーザーとの対話型のスクリプトを作成することができます。

次のステップとして、以下のような内容に挑戦してみてはいかがでしょうか。

* ユーザーの入力に応じて処理を分岐させる
* 複数の入力を受け付けて、リストや配列に格納する
* 入力されたデータをファイルに保存する

これらの内容についても、今後の記事で詳しく解説していきますので、ぜひチェックしてみてください。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

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