前回のPowerShell: ◆$host.UIのプロンプト入力機能を使うと同様のメソッドで「PromptForChoice」メソッドを使ってみた。
使い方はほぼ同様。
選択肢としてFieldDescriptionの代わりにChoiceDescriptionクラスを使う。
このクラスはコンストラクターに文字列を2つ取り、1つが選択肢そのものでもう一つがそれに対応するHELP表示項目(説明項目)になっている。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 | $dClass = [System.Management.Automation.Host.ChoiceDescription] $cClass = "System.Collections.ObjectModel.Collection" $descriptions = New-Object "$cClass``1[$dClass]" $questions = (("&1:巨人"),("読売ジャイアンツ")),(("&2:阪神"),("阪神タイガース")), (("&3:中日"),("中日ドラゴンズ")),(("&4:横浜"),("横浜ベイスターズ")), (("&5:ヤクルト"),("東京ヤクルトスワローズ")),(("&6:広島"),("広島東洋カープ")) $questions | %{$descriptions.Add((New-Object $dclass $_))} $caption = "<アンケート>" $message = "好きな球団はどこですか?" $result = $host.UI.PromptForChoice($caption, $message, $descriptions,2) Write-Host $descriptions[$result].Label.replace("&","") "ですね" $winner = {Get-Random (0..($questions.Count-1) | %{$questions[$_][1]})} "`n来年以降の優勝予想は" 1..4 | %{invoke-command $winner} "となっています。" $winner2 = Set-PSBreakpoint -Variable winner2 -Mode Read -Action { $script:winner2 = Get-Random (0..($questions.Count-1) | %{$questions[$_][1]})} "`n2位予想は" 1..4 | %{$winner2} "となっています。" |
選択肢は&の次の文字がショートカットになるようだ。
ISEの場合、ヘルプはツールチップで表示される。
優勝予想に深い意味はありません。(ちょっと試してみた)
あー、2位予想は1位を抜かさないとダメか。(^^;
0 件のコメント:
コメントを投稿