examples/Get-PersonMyLabPlusData.ps1


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

#Script Variables


$Output = @()

#Get Useful Terms
$CurrentTerms = Get-BBTerms -TargetTerm 'NextToStart'
$LMSConnectDataSourceKey = Get-BBDataSources -DataSourceID 'LMSConnect'


#Get the courses
foreach($Term in $CurrentTerms){
    $CoursesToLookFor = Get-BBCourses -Filter "termId=$($Term.id)" -Verbose | Where-object {($_.courseId -like "MTH101*") -or ($_.courseId -like "MTH105*") -or ($_.courseId -like "MTH107*") -or ($_.courseId -like "MTH130*") -or ($_.courseId -like "STA282*") -or ($_.courseId -like "AST111*")}
    #Get Available Instructor, Teaching Assistant, and Student memeberships. Then, only get those that are LMSConnect Enrollments. Add the records to be output later in the format that it needs.
    $CoursesToLookFor | foreach-Object -Begin{

            $Students = @()
            $Instructors = @()
            $Counter = 0
        } -Process {
            $Counter += 1
            Write-Verbose "Processing Course Enrollments Progress: $($Counter)/$($_.count) ($($($Counter)/$($_.count))) [$($_.id)] PercentComplete $(($($Counter)/$($_.count))*100)"
            $params = @{
                CourseID =  $_.id
                ExpandUser = $true
            }
                Write-Verbose "Processing memberships for $($_.id)"
                $Instructors += Get-BBCourseMemberships @params -Filter "role=Instructor&availability.available=Yes&datasourceId=_175_1" -verbose
                $Instructors += Get-BBCourseMemberships @params -Filter "role=TeachingAssistant&availability.available=Yes&datasourceId=_175_1" -verbose
                $Students += Get-BBCourseMemberships @params -Filter "role=Student&availability.available=Yes&datasourceId=_175_1" -verbose
            } -End {
                $Output += $Instructors# | Where-Object {$_.dataSourceId -eq '_175_1'}
                $Output += $Students# | Where-Object {$_.dataSourceId -eq '_175_1'}
            }
}


$CourseMemberships = Join-Object -left $Output -right $CoursesToLookFor -LeftJoinProperty 'courseId' -RightJoinProperty 'id' -Prefix 'course-'