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-' |