PoshCode Logo PowerShell Code Repository

Get-RecurseMember (modification of post by tojo2000 view diff)
diff | embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1077"></script>download | new post

A function for recursively getting a list of unique users that are members of a Domain Group.

  1. function Get-RecurseMember {
  2. <#
  3. .Synopsis
  4.   Does a recursive search for unique users that are members of an AD group.
  5.  
  6. .Description
  7.   Recursively gets a list of unique users that are members of the specified
  8.   group, expanding any groups that are members out into their member users.
  9.  
  10.   Note: Requires the Quest AD Cmdlets
  11.         http://www.quest.com/powershell/activeroles-server.aspx
  12.  
  13. .Parameter group
  14.   The name of the group.
  15.  
  16. .Example
  17. PS> Get-RecurseMember 'My Domain Group'
  18.  
  19. .Notes
  20.   NAME:      Get-RecurseMember
  21.   AUTHOR:    tojo2000
  22. #Requires -Version 2.0
  23. #>
  24.   param([Parameter(Position = 0,
  25.                    Mandatory = $true]
  26.         [string]$group)
  27.   $users = @{}
  28.  
  29.   try {
  30.     $members = Get-QADGroupMember $group
  31.   } catch [ArgumentException] {
  32.     Write-Host "`n`n'$group' not found!`n"
  33.     return $null
  34.   }
  35.  
  36.   foreach ($member in $members) {
  37.     if ($member.Type -eq 'user') {
  38.       $users.$($member.Name.ToLower()) = $member
  39.     } elseif ($member.Type -eq 'group') {
  40.       foreach ($user in (Get-RecurseMember $member.Name)) {
  41.         $users.$($user.Name.ToLower()) = $user
  42.       }
  43.     }
  44.   }
  45.  
  46.   foreach ($user in $users.Keys | sort) {
  47.     Write-Output $users.$user
  48.   }
  49. }

Submit a correction or amendment below (
click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:


Remember me