functions/Get-MergedCoursesWithoutTerm.ps1

<#
.Synopsis
   Given a term id, it returns all merged shells with no semester set.
.DESCRIPTION
   Given a term id, it returns all merged shells with no semester set.
.EXAMPLE
   $Terms = Get-BBTerms -TargetTerm AllCurrent -Verbose
   $MergedCoursesWithoutTerm = @()
   foreach($Term in $Terms){
      $MergedCoursesWithoutTerm += Get-MergedCoursesWithoutTerm -TermId $Term.Id -Verbose
   }
#>

function Get-BBMergedCoursesWithoutTerm
{
    [CmdletBinding()]
    [Alias()]
    Param
    (
        [parameter(mandatory)][string]$TermId
    )
    Begin
    {

    }
    Process
    {
        $ChildCourses = @()
        $ParentCourses = @()
        $ParentCoursesWithOutTerms = @()

        $Term = Get-BBTerms -TermId $TermId

        #Get All Courses for that term
        $Courses = Get-BBCourses -Filter "termId=$($Term.id)"

        #Get All CrossListed courses for that term while displaying a progress bar
        $Courses | foreach-Object -Begin{
                                            $Counter = 0
                                } -Process {
                                            $Counter += 1
                                            Write-Verbose "Processing Courses Progress: $($Counter)/$($Courses.count) ($($($Counter)/$($Courses.count))) [$($_.id)] Percent Complete: $(($($Counter)/$($Courses.count))*100)"
                                            $ChildCourses += Get-BBCrossListSet -CourseID $_.id
                                } -End {}

            #Determine the unique parents for all crosslitsted courses retrured, and then get each course from the rest api.
            $ParentCourses = $ChildCourses | sort-object -Property {$_.parentId} -Unique | foreach-object {
                Get-BBCourses -CourseID $_.parentId
            }
            #Return all parent courses for that semester which don't have a semester set.
            $ParentCoursesWithOutTerms = $ParentCourses | where-object {$null -eq $_.termId}
            return $ParentCoursesWithOutTerms
    }
    End
    {
    }
}