Работа над этим скриптом в течение нескольких недель без движения. Этот скрипт невероятно сглаживает любые заданные уровни вложенных групп в отдельные независимые группы 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}
}