Public/Import/Import-ActiveDirectoryGroupMember.ps1

function Import-ActiveDirectoryGroupMember { 
    <#
    .SYNOPSIS
    Import Active Directory Group Members
     
    .DESCRIPTION
    Import Active Directory Group Members
     
    .PARAMETER Groups
    CSV of new AD Groups and Member
     
    .EXAMPLE
    Import-Csv .\GroupsAndMembers.csv | Import-ActiveDirectoryGroupMember
 
    #>


    [CmdletBinding()]
    param (

        [Parameter(ValueFromPipeline = $true, Mandatory = $true)]
        $Groups
    )
    Begin {
        Import-Module ActiveDirectory -Verbose:$False
        $OutputPath = '.\'
        $LogFileName = $(get-date -Format yyyy-MM-dd_HH-mm-ss)
        $Log = Join-Path $OutputPath ($LogFileName + "-WhatIf_Import.csv")
        $ErrorLog = Join-Path $OutputPath ($LogFileName + "-Error_Log.csv")
    
        
        $DomainNameHash = Get-DomainNameHash

        Write-Verbose "Importing Active Directory Users that have at least one proxy address"
        $AllADUsers = Get-ADUGroupsWithProxyAddress -DomainNameHash $DomainNameHash

        Write-Verbose "Caching hash table. DisplayName attribute as key and value of ObjectGuid"
        $ADHashMailToGuid = $AllADUsers | Get-ADHashMailToGuid
    }
    Process {
        ForEach ($CurGroup in $Groups) {
            $setparams = @{}
            ForEach ($h in $sethash.keys) {
                if ($($sethash.item($h))) {
                    $setparams.add($h, $($sethash.item($h)))
                }
            }

            $filter = '{0} -eq {1}' -f $CurGroup.DisplayName
            $Group = Get-ADGroup -filter $filter

            if ($CurGroup.MembersSMTP) {
                $CurGroup.MembersSMTP -Split ";" | ForEach-Object {
                    Set-DistributionGroup -Identity $Group.ObjectGuid -ManagedBy @{Add = "$ADHashMailToGuid[$_]"}
                }
            }
            Set-ADGroup -identity $Group.ObjectGUID 
        }
    }
    End {
        
    }
}