Public/Group/New-DistributionGroupMembersHash.ps1
function New-DistributionGroupMembersHash { <# .SYNOPSIS Creates a hash table from data returned from Get-DistributionGroupMembership .DESCRIPTION Creates a hash table from data returned from Get-DistributionGroupMembership .PARAMETER Recurse Reveals nested group membership .EXAMPLE "group01@contoso.com" | New-DistributionGroupMembersHash -Recurse -Verbose .EXAMPLE Get-DistributionGroup -resultsize unlimited | New-DistributionGroupMembersHash -Recurse -Verbose #> [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] [string[]]$Identity, [Parameter()] [switch]$Recurse ) begin { $GroupHash = @{} } process { foreach ($CurIdentity in $Identity) { Write-Verbose "Looking up memberships for '$CurIdentity'." if ($Recurse) { $GroupHash.$CurIdentity = $CurIdentity | Get-DistributionGroupMembers -Recurse } else { $GroupHash.$CurIdentity = $CurIdentity | Get-DistributionGroupMembers } } } end { $GroupHash } } |