public/List-Users.ps1

function List-Users {

    param (
        [Parameter(Mandatory=$true)]
        [string]$Group
        )


    # Put all members of group in to a variable
    $GroupMembers = Get-ADGroupMember -Identity $Group

    # Prepare a blank array
    $UsersToList = @()

    # As Get-ADGroupMember does not return the "description" field we will need to loop through and Get-ADUser on each group member to get all their properties
    Foreach ($User in $GroupMembers) {
    
    # Set the current value in the pipe line to $User
    $_ = $User

    # Get the ADUser using their account name
    $User = Get-ADUser -Filter {samaccountname -eq $_.SamAccountName -and enabled -eq $true} -Properties *

    # Add them to the emtpy array created earlier
    $UsersToList += $User

    }


    # Do some super magic formatting!
    # Sort by description and then by name
    # Put in a table and group by description
    # If they are a student then change the group heading to "Year Group" from "Description"
    # Else assume they are staff and change the group heading to "Role" from "Description"
    # Change property name (SamAccountName to Username)
    # Output to a text file on the desktop
    If ($Group -like "Student*") {
        
        $UsersToList |
        Sort-Object @{expression="Description";Ascending=$true},
                    @{expression="Name";Ascending=$true} |
        Format-Table -AutoSize -GroupBy @{Name="Year Group";Expression='Description'} -Property `
        @{Label="Name";Expression={$_.Name}},
        @{Label="Username";Expression={$_.SamAccountName}} |
        Out-File "$HOME\Desktop\$Group User List.txt"

        } else {

        $UsersToList |
        Sort-Object @{expression="Description";Ascending=$true},
                    @{expression="Name";Ascending=$true} |
        Format-Table -AutoSize -GroupBy @{Name="Role";Expression='Description'} -Property `
        @{Label="Name";Expression={$_.Name}},
        @{Label="Username";Expression={$_.SamAccountName}} |
        Out-File "$HOME\Desktop\$Group User List.txt"

        }


}