PowerShell

PowerShellで選択肢を提示するスクリプトの作成方法

この記事では、PowerShellを使いユーザーへ選択肢を提示するスクリプトの作成方法を解説します。

Read-HostSwitchなどの基本コマンドを用いて、シンプルながらも使いやすい選択メニューを実現する手順を説明します。

初心者にも分かりやすく、実践に役立つ内容を心がけております。

選択肢表示の基本構造

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データ連携による選択肢生成の実装例を通し、実践的なスクリプト作成手法を学ぶことができます。

関連記事

Back to top button
目次へ