我想要ATL Users
中具有直接报告的用户列表。
第1部分:组成员身份
我可以将用户分组。
Get-ADGroupMember "ATL Users" | Where objectClass -eq "user"
第2部分:直接报告过滤器
我可以获得具有直接报告的用户列表,但是速度非常慢(扫描整个树)。
Get-ADUser -Filter "DirectReports -like '*'"
问题
如果他们有直接报告,如何在ATL Users
中然后在-Filter
中获得用户列表?
答案 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}