# encoding: ascii
# api: powershell
# title: Using Read-Choice
# description: I saved Joel Bennett’s Read-Choice function as a module and wrote this function.  I wanted to make it useful (especially to beginners) so it doesn’t look like a “normal” menu script, but Bennett’s function is so friendly that you could write a “normal” menu script without using variables at all.  To create the module save Read-Choice in a file named ReadChoice.psm1 and save it in $PSModulePath\ReadChoice.
# version: 0.1
# type: function
# author: Vince Ypma
# license: CC0
# function: Invoke-PowerTipsMenu
# x-poshcode-id: 6001
# x-archived: 2016-05-17T10:50:41
# x-published: 2016-09-04T01:21:00
#
#
function Invoke-PowerTipsMenu
{
    function Start-PowerTipsMonthly ([int]$Volume)
    {
        [string]$urlHead = "http://powershell.com/cs/media/p"
        [string]$urlTail = "download.aspx"
        [int[]]$urlIndex = @(0, 23856, 24814, 25742, 26784, 28283, 29098,
                                29920, 30542, 31297, 32274, 33169, 38383)

        Start-Process -FilePath "$urlHead/$($urlIndex[$Volume])/$urlTail"
    }

    Import-Module -Name ReadChoice

    [string]$title  = "`nPowerTips Monthly`n" + ("="*17)
    [string]$prompt = "`nSelect PowerTips Monthly Volume(s)`n" + ("-"*34)

    "&File System Tasks",
    "&Arrays and Hash Tables",
    "&Date, Time, and Culture",
    "&Objects and Types",
    "&WMI",
    "Regular &Expressions",
    "F&unctions",
    "Static .&NET Methods",
    "&Registry",
    "&Internet-Related Tasks",
    "&XML-Related Tasks",
    "&Security-Related Tasks",
    "&Quit" | 
        Read-Choice -Title $title -Prompt $prompt -MultipleChoice |
            ForEach-Object {
                if (0..11 -contains $_)
                {
                    Start-PowerTipsMonthly -Volume ($_ + 1)
                }
            }

    Remove-Module -Name ReadChoice
}
