This one might help, it gathers information about different groups in different domains, including nested groups in audit groups and export data to csv file.
#groups to audit
$groups = "Domain Admins", "Schema Admins","Enterprise Admins","Administrators"
#domains to audit
$domains = "domain.local"
$date = $([System.DateTime]::Now)
$reportdate = $date.ToString("yyyy_MM_dd_HH_mm_ss")
$data = @()
foreach ($domain in $domains){
foreach ($group in $groups){
Write-Verbose "Working with $group in $domain" -Verbose
#get group
try{
$gr = $null
$gr = Get-ADGroup -Identity $group -Properties Description,created,modified,distinguishedname -ErrorAction Stop -Server $domain
#get group members
try{
$grm = $null
$grm = Get-ADGroupMember -Identity $gr -ErrorAction Stop -Server $domain
#get group members information
foreach ($groupmember in $grm){
$grmname = $groupmember.name
#
$userdomain =([RegEx]::Matches($groupmember.distinguishedname, '(?i)DC=\w{1,}?\b')|ForEach-Object { $_.Value -replace ("DC=","") }) -join '.';
try{$gm = Get-ADObject -Identity $groupmember.distinguishedname -Properties Name,ObjectClass,Samaccountname,Created,Modified,DistinguishedName,Description -Server $userdomain -ErrorAction Stop }
catch {Write-Verbose "Something is wrong with group member $grmname. Error: $_" -Verbose}
$Property = [Ordered]@{
ReportDomain = $domain;
ParrentGroup = $gr.Name;
ParrentGroupModified = $gr.Modified;
ParrentGroupCreated = $gr.Created;
MemberName = $gm.Name;
MemberClass = $gm.ObjectClass;
MemberSamaccountname = $gm.Samaccountname;
MemberDescription = $gm.Description;
MemberDN = $gm.DistinguishedName;
MemberCreated = $gm.Created;
ReportDate = $date
}
$row = New-Object -TypeName psobject -Property $Property
$data+=$row
}#foreach group member end
}#end try get group members
catch {Write-Verbose "Something is wrong with group members: $_" -Verbose}
}#end try get group
catch {Write-Verbose "Something is wrong with group: $_" -Verbose}
}#foreach group end
}#foreach domain end
$data|Export-Csv -Path C:\Temp\Group_report_$reportdate.csv -NoTypeInformation -Encoding UTF8 -Force
$data
Write-Verbose "File created: C:\Temp\Group_report_$reportdate.csv" -Verbose