It's a little unclear what you are asking for, it sounds like you want your data grouped. However, you are saying that you want as headers in one (1) csv file the Group Name and Description for about 500 groups. Are you asking to have 1000 header fields in your csv? It seems that would be a bit confusing. Personally I'd create a CSV file with 4 header fields:
GroupName,GroupDescription,MemberName,MemberDescription
Each subsequent row would contain all of that information. Within Execl you could group the information for viewing purposes. The script to do that would be this:
$GroupInfo = '' | Select 'Group Name','Group Description','Member Name','Member Description'
$AllGroups = @()
$MyGroups = Get-QADGroup -SearchRoot "domain.local/geo location/Universal Groups" -DontUseDefaultIncludedProperties -IncludedProperties Name,Description,Member | select Name,Description,Member
foreach($Group in $MyGroups){
$GroupInfo.'Group Name' = $Group.Name
$GroupInfo.'Group Description' = $Group.Description
foreach($Member in $Group.Member){
$User = Get-QADUser $Member -DontUseDefaultIncludedProperties -IncludedProperties Name,Description | select Name,Description
$GroupInfo.'Member Name' = $User.Name
$GroupInfo.'Member Description' = $User.Description
#it takes a while to go through a lot of goups...this just lets you watch so you don't think it's broke and cancel it.
$GroupInfo | select 'Group Name','Group Description','Member Name','Member Description'
$AllGroups += $GroupInfo | Select 'Group Name','Group Description','Member Name','Member Description'
}
}
$AllGroups | Export-Csv allginfo.csv -NoTypeInformation #Export all that group info to csv file.