Получить все группы пользователя/группы рекурсивно

У меня есть код для получения групп пользователя и записи их в Arraylist, однако он найдет только те группы, в которых непосредственно находится пользователь. Он не найдет группы глубже 1 уровня.

Например: пользователь является членом группы 1, группа 1 является членом группы 2 и т. д. Я найду только группу 1. Группа 2 не будет записана в мой ArrayList.

$Groups = Get-ADPrincipalGroupMembership -Server ESX-DC $GroupName

$GroupArrayList = New-Object System.Collections.ArrayList
foreach ($Group in $Groups)
{
$GroupArrayList.Add($Group.Name) | Out-Null 
} 

Может ли кто-нибудь помочь мне здесь? Спасибо.


person Andr0mega    schedule 28.10.2019    source источник
comment
Get-ADGroupMember здесь не работает? Вы не можете различать группы и пользователей? Я бы проверил группы. Если это группа, проверьте ее пользователей.   -  person Alex_P    schedule 28.10.2019


Ответы (1)


Я не знаю о рекурсивном параметре, поэтому я думаю, что вы должны написать это для себя. Впрочем, я писал скрипты для подобных задач. Может это поможет.

function Get-ADPrincipalGroupMembershipRecurse
{
    param
    (
        [Parameter(Mandatory = $true)]
        [System.String]$Identity   
    )

    $script:Groups = @()

    function Get-NestedAdGroups
    {
        param
        (
            [Parameter(Mandatory = $true)]
            [System.String]$Identity   
        )

        $ADGroup = Get-ADGroup -Identity $Identity -Properties MemberOf, Description
        $script:Groups += $ADGroup

        foreach ($Group in $ADGroup.MemberOf)
        {
            if ($script:Groups.DistinguishedName -notcontains $Group)
            {
                Get-NestedAdGroups -Identity $Group
            }
        }
    }

    foreach ($Group in (Get-ADUser -Identity $Identity -Properties MemberOf).MemberOf)
    {
        Get-NestedAdGroups -Identity $Group
    }

    return ($script:Groups | Sort-Object -Unique)
}

Get-ADPrincipalGroupMembershipRecurse -Identity $SamAccountName
person Patrick    schedule 28.10.2019