examples/Get-SelfEnrollLinks.ps1

#Import Useful Modules
Import-Module .\PSBlackboard.psm1 -Verbose -force

#Script Variables
$Courses = @()
$CourseMemberships = @()
$Returns = @()


$AutoEnrollCourses = @(
    'LSS_Sandbox-0221',
    'APA_online_training-1021',
    'Biology_Biomedical_Cellular_and_Molecular_Biology_Major-0522',
    'Biology_Ecology_Evolution_and_Conservation_Major-0522',
    'APA_Self-Study_BbSandbox-0622',
    'MPA_Program-0722',
    'MPH-Orientation-0523',
    'sport_management-0823',
    'MHA-Accounting-Review-1024',
    'MHA-Statistics-Review-1024',
    'Gradstudent-Orientation-0425',
    'Student-Orientation-1024',
    'Bb_Training-1219',
    'GTAPD_2018-0821',
    'OER_Workshop-0623',
    'OCDW-1221',
    'OnlineTeachingatCMU-1021',
    'Online_Preview-1219',
    'Online-Course-Accessibility-0323'
)

foreach($AutoEnrollCourse in $AutoEnrollCourses){
    $Courses += Get-BBCourses -CourseID "externalId:$($AutoEnrollCourse)"  -Verbose
}

$Courses | foreach-Object -Begin{
        $Counter = 0
    } -Process {
        $Counter += 1
        $CourseID = $_.externalId
        Write-Progress -Activity "Processing Course Enrollments" -Status "Progress: $($Counter)/$($Courses.count) ($($($Counter)/$($Courses.count))) [$($_.id)]" -PercentComplete (($($Counter)/$($Courses.count))*100)
        $params = @{
            CourseID =  $_.id
            ExpandUser = $true
        }
            Write-Verbose "Processing memberships for $($_.id)"
            Get-BBCourseMemberships @params -Filter "role=Instructor&availability.available=Yes" -Verbose | foreach-Object -Process {

                $Returns += [PSCUstomObject]@{
                    FirstName = $_.user.name.given
                    LastName = $_.user.name.family
                    EmailAddress = $_.user.contact.email
                    courseId = $CourseID
                }
            }
            #$CourseMemberships += Get-BBCourseMemberships @params -Filter "role=TeachingAssistant&availability.available=Yes" -Verbose

        } -End {
        }



#Save the CSV that we need since you can't mail an attachment without it existing on the server.
$Returns | Export-Csv -path d:\temp\AutoenrollEnrollments.csv -NoTypeInformation