Public/get-AllegisADRecursiveGroupMembership.ps1

function get-AllegisADRecursiveGroupMembership ($groupName,$domain)
{
    function get-AllegisADchildgroup ($groupName,$domain,[string[]]$checkedgroups){
        if ($domain -eq $null){
            $group=get-adgroup $groupname -Properties members
        }else{
            $group=get-adgroup $groupname -server $domain -Properties members
        }
        if ($group.SamAccountName -in $checkedgroups.samaccountname){return}
        $checkedgroups+=$group
        foreach ($member in $group.Members)
        {
            #write-host $member -fore green
            if ($domain -eq $null){
                $object = $member | Get-ADObject -Properties samaccountname
            }else{
                $object = $member | Get-ADObject -server $domain -Properties samaccountname
            }
            if ($object.ObjectClass -eq 'group'){
                 get-AllegisADchildgroup -groupName $object.samaccountname -domain $domain -checkedgroups $checkedgroups
            }else{
                $object.samaccountname
            }
        }
    }
    get-AllegisADchildgroup -groupName $groupname -domain $domain
}