examples/Get-BBFacultListServListData.ps1


#Friday Mornings
#Do one file per semester
#Import Useful Modules
Import-Module .\PSBlackboard.psm1 -Verbose -force

#Get Useful Terms
$CurrentTerms = Get-BBTerms -TargetTerm 'AllCurrent'
#$CurrentTerms = Get-BBTerms -TermID 'externalId:30700'

#Get the courses
foreach($Term in $CurrentTerms){
    $Courses = @()
    $CourseMemberships = @()
    $Returns = @()

    $Courses += Get-BBCourses -Filter "termId=$($Term.id)" -Verbose

    $Courses | foreach-Object -Begin{
        $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)"
            $CourseMemberships += Get-BBCourseMemberships @params -Filter "role=Instructor&availability.available=Yes" #-Verbose
            $CourseMemberships += Get-BBCourseMemberships @params -Filter "role=TeachingAssistant&availability.available=Yes"# -Verbose
        } -End {
        }
    #Determine all unique users
    $UniqueUsers = $CourseMemberships | sort-object -Property {$_.user.userName} -Unique
    If ($UniqueUsers.count -gt 0){
    #Add the columns we need to an array
    $UniqueUsers | foreach-Object -Process {
        $Returns += [PSCUstomObject]@{
            EmailAddress = $_.user.contact.email
            FirstName = $_.user.name.given
            LastName = $_.user.name.family

        }
    }

        #Save the CSV that we need since you can't mail an attachment without it existing on the server.
        $FileName = ".\examples\temp\BBFacultListServeList_$($Term.name).txt"
        #$Returns | Sort-Object -Property EmailAddress | Export-Csv -path $FileName -NoTypeInformation -Encoding ascii -Delimiter "`t"
        $Returns | Sort-Object -Property EmailAddress | ConvertTo-Csv  -NoTypeInformation -Delimiter "`t"  | % { $_ -replace '"', ""} | select-object -Skip 1 |Set-Content -path $FileName

        #Send the mail to whoever needs it.
        $recipients = "Marcus Jackson <jacks3m@cmich.edu>", "Marnie Roestel <roest1m@cmich.edu>"
        #$recipients = "Marcus Jackson <jacks3m@cmich.edu>"
        $subject = "BBFacult List Serve List Data"
        $Body = "Attached are $($UniqueUsers.count) unique instructors for enrollments in $($Term)"
        Send-MailMessage -To $recipients -Subject $Subject -Body $Body -SmtpServer 'smtp.cmich.edu' -From 'no-reply@blackboard.apps.cmich.edu' -Attachment $FileName

        #Remove the CSV as it is no longer needed.
        remove-item $FileName
    }

}

#Get Available Instructor and Teaching Assistant memeberships based upon those couses. This shows a progress bar for the executions.