Private/Wizard/Read-TcChoice.ps1

function Read-TcChoice {
    <#
    .SYNOPSIS
    Repeats a question until the answer is one of the allowed values.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)][string]$Prompt,
        [Parameter(Mandatory)][string[]]$Allowed,
        [Parameter(Mandatory)][string]$Help
    )

    while ($true) {
        $answer = ([string](Read-TcAnswer -Prompt $Prompt)).Trim().ToLowerInvariant()
        if ($answer -in $Allowed) { return $answer }
        Write-TcMessage -Message $Help -Level Warning
    }
}