internal/functions/Import-Manager.ps1

Function Import-Manager {
    <#
    .SYNOPSIS
        Import Manager Attribute
     
    .DESCRIPTION
        Function called by Import-T2TAttributes if we found the Manager property on the UserListToImport.csv and/or ContactsListToImport.csv
     
    .PARAMETER ObjType
        Type of object that the function will work, valid values are MEU or Contact
     
    .EXAMPLE
        PS C:\> Import-Manager -ObjType MEU, Contacts
        Import the manager attribute valies from from the UserListToImport.csv and ContactsListToImport.csv
    #>


    [CmdletBinding()]
    param (
    [ValidateSet('MEU','Contact')]
    [String]$ObjType
    )

    Switch ( $ObjType ) {

        MEU {

            Write-PSFMessage -Level Output -Message  "Starting Manager attribute import"
    
            [int]$counter = 0
            $ManagerCount = ($ImportUserList | Measure-Object).count
            foreach ( $i in $ImportUserList ) {

                $counter++
                Write-Progress -Activity "Importing Manager Attribute" -Status "Working on $($i.DisplayName)" -PercentComplete ($counter * 100 / $ManagerCount )

                if ( $LocalMachineIsNotExchange.IsPresent -and $i.Manager ) {

                    Try
                    {

                        Set-RemoteADUser -Identity $i.SamAccountName -Manager $i.Manager -ErrorAction Stop

                    }
                    catch
                    {

                        Write-PSFMessage -Level Output -Message "Failed to add the user's $($i.DisplayName) manager attribute"

                    }
                }
                elseif ( $i.Manager ) {

                    Try
                    {

                        Set-ADUser -Identity $i.SamAccountName -Manager $i.Manager -ErrorAction Stop

                    }
                    catch
                    {

                        Write-PSFMessage -Level Output -Message "Failed to add the user's $($i.DisplayName) manager attribute"

                    }
                }
            }
        }

        Contact {

            Write-PSFMessage -Level Output -Message  "MailContacts - Starting manager attribute import"
    
            [int]$counter = 0
            $ManagerCount = ($ImportContactList | Measure-Object).count
            foreach ( $i in $ImportContactList ) {

                $counter++
                Write-Progress -Activity "MailContacts - Importing Manager Attribute" -Status "Working on $($i.DisplayName)" -PercentComplete ($counter * 100 / $ManagerCount )

                Try
                {

                    Set-Contact -Identity $i.Alias -Manager $i.Manager -ErrorAction Stop

                }
                catch
                {

                    Write-PSFMessage -Level Output -Message "MailContacts - Failed to add the user's $($i.DisplayName) manager attribute"

                }
            }
        }
    }
}