Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
# Путь до корня домена, OrganizationUnit или Container $RootOU = "DC=holding,DC=com" # Искомая группа доступа $TargetGroup = "Group" function Check-AclForGroup { param ( [string]$DistinguishedName, [string]$Group ) # Получаем ACL $acl = Get-Acl -Path "AD:$DistinguishedName" foreach ($ace in $acl.Access) { if ($ace.IdentityReference -like "*$Group*") { Write-Output "$DistinguishedName : Group '$Group' found with permissions: $($ace.ActiveDirectoryRights)" } } } function Process-Container { param ( [string]$DistinguishedName, [string]$Group, [int]$MaxDepth = 2 # глубина рекурсии, включая текущий уровень, т.е. +1 ) # Проверяем acl Check-AclForGroup -DistinguishedName $DistinguishedName -Group $Group # Останаливаем рекурсию при достижении макс глубины if ($MaxDepth -le 0) { return } # Получаем только OU и контейнеры $subContainers = Get-ADObject -Filter {(objectClass -eq "organizationalUnit") -or (objectClass -eq "container")} -SearchBase $DistinguishedName -SearchScope OneLevel foreach ($subContainer in $subContainers) { # Рекурсивно проходим по каждому Process-Container -DistinguishedName $subContainer.DistinguishedName -Group $Group -MaxDepth ($MaxDepth - 1) } } Process-Container -DistinguishedName $RootOU -Group $TargetGroup
Проверено на следующих конфигурациях:
Автор первичной редакции: Виталий Якоб Время публикации: 10.10.2024 12:06