Powershell: как: удалить вложенные группы активного каталога - PullRequest
0 голосов
/ 16 июня 2020

Работа над этим скриптом в течение нескольких недель без движения. Этот скрипт невероятно сглаживает любые заданные уровни вложенных групп в отдельные независимые группы AD.

Но я хочу сохранить прямой первый уровень вложенной группы AD внутри группы а остальные вложенные группы должны быть удалены.

Например. 1-й уровень GroupA вложен в GroupB, 2-й уровень GroupB вложен в Group C, 3-й уровень Group C вложен в GroupD, 4-й уровень GroupE вложен в GroupF

здесь я хотел сохранить вложенность GroupA с Group B, но необходимо сгладить (сгладить) все остальные уровни вложенности `

# Specify the DistinguishedName (DN) of the parent group.
# We will remove all members of this group that have class "group".
$GroupDN = "cn=Sales,ou=West,dc=domain,dc=com"
# The Member property is an array of the DistinguishedNames (DN) of all direct members of the group.
# The DN is required by Get-ADObject, which we use to determine the class of each member.
$Members = (Get-ADGroup -Identity $GroupDN -Properties Member).Member

# Create an array of distinguished names of nested groups to remove.
$GroupsToRemove = @()

# Enumerate all direct members of the parent group and determine which are nested groups.
ForEach ($Member In $Members)
{
    # Members can be users, computers, contacts, or nested groups. We only consider groups.
    $Class = (Get-ADObject -Identity $Member).ObjectClass
    If ($Class -eq "group")
    {
        # Add the DN of this nested group to the array of groups to remove.
        $GroupsToRemove = $GroupsToRemove + $Member
    }
}

# Remove any nested groups from the parent group.
If ($GroupsToRemove.Count -gt 0)
{
    Set-ADGroup -Identity $GroupDN -Remove @{Member=$GroupsToRemove}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...