2011年10月31日月曜日

◆$host.UIのプロンプト入力機能を使う2

前回の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}
"となっています。"

image

選択肢は&の次の文字がショートカットになるようだ。
ISEの場合、ヘルプはツールチップで表示される。

優勝予想に深い意味はありません。(ちょっと試してみた)

あー、2位予想は1位を抜かさないとダメか。(^^;

0 件のコメント:

コメントを投稿