具有直接报告的ADGroup中的用户

时间:2018-10-26 20:16:20

标签: powershell active-directory

我想要ATL Users中具有直接报告的用户列表。

第1部分:组成员身份

我可以将用户分组。

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

第2部分:直接报告过滤器

我可以获得具有直接报告的用户列表,但是速度非常慢(扫描整个树)。

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

问题

如果他们有直接报告,如何在ATL Users中然后在-Filter中获得用户列表?

2 个答案:

答案 0 :(得分:1)

这很容易通过使用memberOf的LDAP过滤器完成。如果这是一次性查询,并且您知道该组的专有名称(在此示例中为cn = ATL用户,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))"

答案 1 :(得分:1)

您可以在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}