我需要使用ldap从Active Directory中获取仅部门值。
一种方法是使用此过滤器$filter = '(objectClass=user)';
并将ldap_search()属性参数设置为array('department')
这个问题是我收到所有条目,其中一些是重复的。有人有什么建议吗?如果它有帮助,我正在使用Symfon2,我有ldap库
答案 0 :(得分:1)
使用您的过滤器,您可以为具有特定属性(在您的案例中为部门)的用户设置LDAP-Entries。所以你的结果是一个用户节点列表。没有办法减少此用户节点列表以具有属性值的不同列表,因为这意味着从列表中删除用户。在您明确搜索所有用户时应删除哪些?
所以唯一的方法就是使用类似以下(未经测试的)代码片段来获取此类搜索结果中的列表:
$departments = [];
$entry = ldap_first_entry($connect, $result);
do {
$attributes = ldap_get_attributes($connect, $entry);
$departments[$attributes['department'][0]] = $attributes['department'][0];
} while ($entry = ldap_next_entry($connect, $entry));
print_R($departments);
答案 1 :(得分:0)
无法向AD请求重复数据删除的department
值列表。您可以做的最接近的是这样的过滤器:(&(objectCategory=person)(objectClass=user)(department=*))
然后对客户端列表进行重复数据删除。请注意,例如,这不会为联系人,组或计算机提供部门值。如果您也需要这些,则需要更新查询以包含您感兴趣的那些对象类型。