PowerShell script to return members of multiple security groups

I need to return all members of several security groups using PowerShell. Conveniently, all groups begin with the same letters.

I can return a list of all relevant security groups using the following code:

Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name 

And I know that I can return a list of members of a specific security group using the following code:

 Get-ADGroupMember "Security Group Name" -recursive | Select-Object Name 

However, I cannot present them together, although I think that what I need should look something like this (please feel free to correct me, why am I here!):

 $Groups = Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name ForEach ($Group in $Groups) {Get-ADGroupMember -$Group -recursive | Select-Object Name 

Any ideas on how to properly structure will be appreciated!

Thanks,

Chris

+6
source share
4 answers

If you don't care what groups the users were in, and you just need a large list of users, this does the job:

 $Groups = Get-ADGroup -Filter {Name -like "AB*"} $rtn = @(); ForEach ($Group in $Groups) { $rtn += (Get-ADGroupMember -Identity "$($Group.Name)" -Recursive) } 

Then the results:

 $rtn | ft -autosize 
+2
source

It is cleaner and will be placed in csv.

 Import-Module ActiveDirectory $Groups = (Get-AdGroup -filter * | Where {$_.name -like "**"} | select name -expandproperty name) $Table = @() $Record = [ordered]@{ "Group Name" = "" "Name" = "" "Username" = "" } Foreach ($Group in $Groups) { $Arrayofmembers = Get-ADGroupMember -identity $Group | select name,samaccountname foreach ($Member in $Arrayofmembers) { $Record."Group Name" = $Group $Record."Name" = $Member.name $Record."UserName" = $Member.samaccountname $objRecord = New-Object PSObject -property $Record $Table += $objrecord } } $Table | export-csv "C:\temp\SecurityGroups.csv" -NoTypeInformation 
+6
source
 Get-ADGroupMember "Group1" -recursive | Select-Object Name | Export-Csv c:\path\Groups.csv 

I got this to work for me ... I would suggest that you could put "Group1, Group2 etc." or try the template. I preloaded AD in PowerShell before distributing:

 Get-Module -ListAvailable | Import-Module 
+5
source

This will give you a list of groups and members of each group.

 param ( [Parameter(Mandatory=$true,position=0)] [String]$GroupName ) import-module activedirectory # optional, add a wild card.. # $groups = $groups + "*" $Groups = Get-ADGroup -filter {Name -like $GroupName} | Select-Object Name ForEach ($Group in $Groups) {write-host " " write-host "$($group.name)" write-host "----------------------------" Get-ADGroupMember -identity $($group.name) -recursive | Select-Object samaccountname } write-host "Export Complete" 

If you need an elegant name or other details, add them to the end of the select-object request.

+3
source

Source: https://habr.com/ru/post/947666/


All Articles