PoshCode Archive  Artifact [bd0233f6aa]

Artifact bd0233f6aaaae78f152956844363002a75c41c103e04d5aa5837aee82cda8331:

  • File Get-RecurseMember.ps1 — part of check-in [c987d20c32] at 2018-06-10 12:56:23 on branch trunk — A function for recursively getting a list of unique users that are members of a Domain Group. (user: tojo2000 size: 1619)

# encoding: ascii
# api: powershell
# title: Get-RecurseMember
# description: A function for recursively getting a list of unique users that are members of a Domain Group.
# version: 0.1
# type: function
# author: tojo2000
# license: CC0
# function: Get-RecurseMember
# x-poshcode-id: 1076
# x-archived: 2013-10-12T00:16:41
# x-published: 2009-05-03T22:53:00
#
#
function Get-RecurseMember {
<#
.Synopsis
  Does a recursive search for unique users that are members of an AD group.

.Description
  Recursively gets a list of unique users that are members of the specified 
  group, expanding any groups that are members out into their member users.

  Note: Requires the Quest AD Cmdlets
        http://www.quest.com/powershell/activeroles-server.aspx

.Parameter group
  The name of the group.

.Example
PS> Get-GroupMember 'My Domain Group'

.Notes
  NAME:      Get-RecurseMember
  AUTHOR:    tojo2000
#Requires -Version 2.0
#>
  param([Parameter(Position = 0,
                   Mandatory = $true]
        [string]$group)
  $users = @{}
  
  try {
    $members = Get-QADGroupMember $group
  } catch [ArgumentException] {
    Write-Host "`n`n'$group' not found!`n"
    return $null
  }
  
  foreach ($member in $members) {
    if ($member.Type -eq 'user') {
      $users.$($member.Name.ToLower()) = $member
    } elseif ($member.Type -eq 'group') {
      foreach ($user in (Get-RecurseMember $member.Name)) {
        $users.$($user.Name.ToLower()) = $user
      }
    }
  }
  
  foreach ($user in $users.Keys | sort) {
    Write-Output $users.$user
  }
}