Как получить все группы пользователей AD (рекурсивно) с помощью Powershell или других инструментов?
Я пытаюсь получить все группы, членом которых является пользователь, даже вложенные (recusively), в Powershell я использую:
(Get-ADUser <username> -Properties MemberOf | Select-Object MemberOf).MemberOf
но он возвращает только группы, пользователь является "прямым" членом, как вы получаете при использовании консоли ad users. I один список всех групп очень полезен, например, вывод из "gpresult-r", где он показывает все группы, членом которых является пользователь.
есть ли способ получить его от любого пользователя объявления? (Не нужно быть исключительно в Powershell, может быть, есть еще один инструмент, который я еще не знаю)
2 ответов
можно использовать LDAP_MATCHING_RULE_IN_CHAIN:
Get-ADGroup -LDAPFilter "(member:1.2.840.113556.1.4.1941:=CN=User,CN=USers,DC=x)"
вы можете использовать его anywahere, что вы можете использовать фильтр LDAP.
пример:
$username = 'myUsername'
$dn = (Get-ADUser $username).DistinguishedName
Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $dn) | select -expand Name | sort Name
или, вы можете использовать построенного атрибута tokenGroups и базовый запрос:
$tokenGroups = Get-ADUser -SearchScope Base -SearchBase '<account-distinguishedName>' `
-LDAPFilter '(objectClass=user)' -Properties tokenGroups | Select-Object `
-ExpandProperty tokenGroups | Select-Object -ExpandProperty Value