'PowerShell Script to display all users part of AD security groups within an OU in AD

I am new to PowerShell I am trying to display all AD security groups within a certain OU and to display each user part of that security group.

I want to show username and name and the security group name to a CSV file.

I have managed to get this information but I had to manually add the AD security group name within the script itself:

$groups = "GroupName1", "GroupName2", "GroupName3", "GroupName4", "GroupName5"

$results = foreach ($group in $groups) {
    Get-ADGroupMember $group | select samaccountname, name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}}
}

$results

$results | Export-csv C:\Users\Sam\Desktop\Users.csv -NoTypeInformation 

The above script outputs the information I require but as stated above I have to manually enter the Security GroupName within the script itself.

I think the command I need to use is Get-ADGroup

Any help is appreciated thanks.



Solution 1:[1]

You can use Get-ADGroup -Filter * -SearchBase 'OUdnHere' to search for all groups under your desired Organizational Unit, then you can simply apply the same logic you already have:

  1. Loop over the Groups
  2. Get their memberships
  3. Construct the output
  4. Export to CSV
$ou = 'distinguished name of my OU here'
Get-ADGroup -Filter * -SearchBase $ou -Properties Description | ForEach-Object {
    foreach($member in Get-ADGroupMember $_) {
        [pscustomobject]@{
            SamAccountName = $member.SamAccountName
            Name           = $member.Name
            GroupName      = $_.Name
            Description    = $_.Description
        }
    }
} | Export-csv C:\Users\Sam\Desktop\Users.csv -NoTypeInformation 

Solution 2:[2]

Try something like this (add the correct dn for the OU of course):

$Groups = Get-AdGroup -SearchBase "ou=OuName,DC=contoso,DC=local" -Filter * | Select -ExpandProperty Name

Or somewhat shorter and easier to read according to me:

$Groups = (Get-AdGroup -SearchBase "ou=OuName,DC=contoso,DC=local" -Filter *).Name

Untested code, but you get the gist of it.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Santiago Squarzon
Solution 2