Пользователи в ADGroup с прямыми отчетами - PullRequest
0 голосов
/ 26 октября 2018

Мне нужен список пользователей в ATL Users, у которых есть прямые отчеты.

Часть 1: Членство в группах

Я могу получить пользователей в группе.

Get-ADGroupMember "ATL Users" | Where objectClass -eq "user"

Часть 2: Фильтр для прямых отчетов

Я могу получить список пользователей с прямыми отчетами, но очень медленно (сканирует все дерево).

Get-ADUser -Filter "DirectReports -like '*'"

Вопрос

Как получить список пользователей в ATL Users, а затем -Filter этих пользователей, если у них есть прямые отчеты?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете просто передать foreach в Get-ADUser -filter после Get-ADGroupMember

Пример:

Get-ADGroupMember "ATL Users" | Where-Object {$_.ObjectClass -eq "user"} | foreach {Get-ADUser $_.samaccountname -properties Name, DirectReports | Where-Object {$_.DirectReports -like "*"} |Select Name, DirectReports}
0 голосов
/ 26 октября 2018

Это легко сделать с помощью фильтра LDAP, используя memberOf. Если это разовый запрос, и вы знаете отличительное имя группы (cn = ATL Users, ou = groups, dc = domain, dc = gTLD в этом примере), вы можете использовать:

    get-aduser -LDAPFilter "(&(memberOf=cn=ATL Users,ou=groups,dc=domain,dc=gTLD)(directReports=*)(objectClass=user))"

Если вы будете выполнять этот запрос несколько раз, было бы лучше получить групповой объект из поиска, чтобы реструктуризация каталога не сломала ваш запрос.

PS> $groupFQDN = (get-adgroup -identity "ATL Users").distinguishedName
PS> $groupFQDN
CN=ATL Users,OU=NewGroupsOU,DC=company,DC=gTLD
PS> get-aduser -LDAPFilter "(&(memberOf=$groupFQDN)(directReports=*)(objectClass=user))"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...