jam051
jam051

Reputation: 31

PowerShell to list multiple AD groups membership from specific Organizational Unit

I have a need to get all of the AD groups and their respective memberships out of a specific AD OU. The code I have does that when writing to the host screen but I am not able to output it cleanly to .xml, which was the requested format, but at this point I will take it in any format. Management would like output file similar to :

Group1 User1
Group1 User2
Group1 User3 
Group2 User1
Group2 User2
Group2 User3
etc...

Anyone have any ideas?

$groupName = Get-ADGroup -SearchBase "OU=Groups,DC=domain,DC=com" -Filter * | Select-Object sAMAccountName

foreach ( $groupMember in $groupName )
{
   # $groupMember
   Get-ADGroupMember -Identity $groupMember.sAMAccountName | Export-Clixml -Path C:\temp.xml -Force

Upvotes: 1

Views: 4745

Answers (2)

Bartek
Bartek

Reputation: 3

i believe you were missing $ in front of "(Members.Group)" line 5 chr 3 shouldn't it be "$($Members.Group)" instead? because when i ran this script it gave me error 'The term 'Members.Group' is not recognized as the name of a cmdlet, function....'

$GroupName = Get-ADGroup -SearchBase "OU=Groups,DC=domain,DC=com" -Filter * | Select-Object -ExpandProperty sAMAccountName

$Members = foreach ($GroupMember in $GroupName) {
   Get-ADGroupMember -Identity $GroupMember | Select-Object @{Name="Group";Expression={$GroupMember}},name
}
"$($Members.Group) $($Members.Name)"  | Out-File C:\temp.txt
#Alternatively for a .CSV
$Members | Export-CSV C:\temp.csv

Upvotes: 0

BenH
BenH

Reputation: 10044

With the assumption that you want the two column text file like you displayed, which is not an XML formatted file. You could use a calculated property using Select-Object then export that information with the formatting of choice:

$GroupName = Get-ADGroup -SearchBase "OU=Groups,DC=domain,DC=com" -Filter * | Select-Object -ExpandProperty sAMAccountName

$Members = foreach ($GroupMember in $GroupName) {
   Get-ADGroupMember -Identity $GroupMember | Select-Object @{Name="Group";Expression={$GroupMember}},name
}
"$(Members.Group) $($Members.Name)"  | Out-File C:\temp.txt
#Alternatively for a .CSV
$Members | Export-CSV C:\temp.csv

Upvotes: 1

Related Questions