PowerShellで選択肢を提示するスクリプトの作成方法
この記事では、PowerShellを使いユーザーへ選択肢を提示するスクリプトの作成方法を解説します。
Read-Host
やSwitch
などの基本コマンドを用いて、シンプルながらも使いやすい選択メニューを実現する手順を説明します。
初心者にも分かりやすく、実践に役立つ内容を心がけております。
選択肢表示の基本構造
Read-Hostを使った入力取得
基本文法と実装例
Read-Host
は、ユーザーからの入力を取得するために使われる基本的なコマンドです。
下記のサンプルコードでは、シンプルなメニューを表示して、入力値を変数に格納する方法を示しています。
# メニューの表示と入力受付
Write-Host "メニューを選択してください:"
Write-Host "1: オプション1"
Write-Host "2: オプション2"
# ユーザーの入力を取得
$choice = Read-Host -Prompt "番号を入力してください"
Write-Host "選択された番号: $choice"
メニューを選択してください:
1: オプション1
2: オプション2
番号を入力してください: 1
選択された番号: 1
ユーザー入力の受け取り方法
上記の例のように、Read-Host
を使うことで、ユーザーからの入力値を変数に格納できます。
格納後の値を他の処理に渡すことができ、柔軟なフローを構築できるのが特徴です。
入力をそのまま他の変数や条件分岐に利用する場合、特別な設定は必要なく、シンプルに記述できる点が利便性の理由です。
Switch文による処理分岐
条件ごとの処理例
ユーザーが入力した値に応じた分岐処理は、switch
コマンドを利用することで簡単に実装できます。
下記のサンプルコードでは、入力値に応じて処理を振り分ける方法を示しています。
# 入力値による処理分岐のサンプル
$input = Read-Host -Prompt "オプション番号を入力してください"
switch ($input) {
"1" {
Write-Host "オプション1が選択されました"
}
"2" {
Write-Host "オプション2が選択されました"
}
default {
Write-Host "無効な選択です"
}
}
オプション番号を入力してください: 2
オプション2が選択されました
入力検証とエラーハンドリング
無効な入力の検出
エラーメッセージの出力方法
ユーザーからの入力値が期待された形式と異なる場合、エラーメッセージを表示して注意を促す方法が有効です。
以下の例では、入力が「1」または「2」以外の場合にエラーメッセージを表示する処理が記述されています。
# 入力値の検証とエラーメッセージの出力
$input = Read-Host -Prompt "1または2を入力してください"
if ($input -ne "1" -and $input -ne "2") {
Write-Host "エラー: 1または2のみ受け付けます"
} else {
Write-Host "有効な入力: $input"
}
1または2を入力してください: 3
エラー: 1または2のみ受け付けます
再入力の促し方
ループ処理による実装
ユーザーから正しい入力が得られるまで繰り返し要求する場合、ループ処理を利用すると効果的です。
下記のサンプルコードは、正しい入力(「1」または「2」)が得られるまで再入力を促す処理を実装しています。
# 正しい入力が得られるまで繰り返すループ処理
do {
$input = Read-Host -Prompt "1または2を入力してください"
if ($input -ne "1" -and $input -ne "2") {
Write-Host "入力が無効です。再度入力してください。"
}
} while ($input -ne "1" -and $input -ne "2")
Write-Host "有効な入力: $input"
1または2を入力してください: 5
入力が無効です。再度入力してください。
1または2を入力してください: 2
有効な入力: 2
応用機能の実装方法
動的な選択肢リストの作成
配列やハッシュテーブルの利用
静的なリストではなく、配列やハッシュテーブルを利用して動的に選択肢を構築する方法もあります。
下記のサンプルコードは、配列に格納した選択肢をループで表示し、ユーザーの入力に応じた選択肢を動的に取得する例です。
# 配列を利用して動的な選択肢リストを作成
$options = @("オプション1", "オプション2", "オプション3")
# 配列の内容をループで表示
for ($i = 0; $i -lt $options.Count; $i++) {
Write-Host "$($i + 1): $($options[$i])"
}
# ユーザーの入力を受付
$choice = Read-Host -Prompt "番号を入力してください"
# 選択されたオプションを表示(配列のインデックスは0から開始するため、入力値から1を引く)
Write-Host "選択されたオプション: $($options[$choice - 1])"
1: オプション1
2: オプション2
3: オプション3
番号を入力してください: 3
選択されたオプション: オプション3
外部データ連携の実装
CSVやJSONからの読み込み方法
ファイルから選択肢を読み込み、動的にリストを生成する方法もあります。
以下の例では、CSVファイルからデータを取り込み、内容に基づいて選択肢を表示する方法を示しています。
CSVファイルは、例えば以下のような内容になっているとします。
例: options.csv
OptionID,OptionName
1,オプション1
2,オプション2
# CSVファイルから選択肢リストを取得する例
$csvData = Import-Csv -Path "options.csv"
# CSVの内容をループで表示
foreach ($row in $csvData) {
Write-Host "$($row.OptionID): $($row.OptionName)"
}
# ユーザーの入力を取得
$choice = Read-Host -Prompt "番号を入力してください"
# 入力値に一致する行を抽出
$selectedOption = $csvData | Where-Object { $_.OptionID -eq $choice }
# 選択されたオプションを表示
Write-Host "選択されたオプション: $($selectedOption.OptionName)"
1: オプション1
2: オプション2
番号を入力してください: 1
選択されたオプション: オプション1
まとめ
この記事では、PowerShellでの選択肢表示について解説しています。
基本的なユーザー入力の取得方法としてRead-Host
を利用し、switch
文で入力に応じた処理の分岐を行う方法を示しました。
また、無効な入力に対するエラーメッセージの出力と再入力を促すループ処理、動的選択肢リストの作成やCSV/JSONデータ連携による選択肢生成の実装例を通し、実践的なスクリプト作成手法を学ぶことができます。