Private/Select-TargetGroup.ps1

function Select-TargetGroup {
    param([array]$AvailableGroups)

    Show-Header -Subtitle "Manage Group Membership"
    Write-Host ""
    Write-Host " SELECT TARGET GROUP" -ForegroundColor DarkCyan
    Write-Host ""

    for ($i = 0; $i -lt $AvailableGroups.Count; $i++) {
        Write-Host " [$($i + 1)] " -ForegroundColor DarkGray -NoNewline
        Write-Host "$($AvailableGroups[$i].Name)" -ForegroundColor White
    }

    Write-Host ""

    do {
        $Selection = Read-Host " Select group (1-$($AvailableGroups.Count))"
    } while ($Selection -notmatch '^\d+$' -or [int]$Selection -lt 1 -or [int]$Selection -gt $AvailableGroups.Count)

    $SelectedGroup = $AvailableGroups[[int]$Selection - 1]
    $script:GroupId = $SelectedGroup.Id
    $script:GroupName = $SelectedGroup.Name

    Write-Host ""
    Write-Host " Selected: " -ForegroundColor Green -NoNewline
    Write-Host "$script:GroupName" -ForegroundColor Cyan
    Start-Sleep -Seconds 1
}