在AD服务器中,我们有一个名为directreports的属性。我希望能够在链中自上而下。首席执行官,他的直接下属是A,B,C。由于直接报告是D,E,F,而Bs直接报告是G,H,I。然后Ds的直接报告一直沿X,Y,Z等向下。
我将其视为嵌套组,但事实并非如此。我迷失了如何一起解决所有这些问题。我正在尝试用PHP做到这一点。我的php代码现在只是搜索用户,并向我提供直接报告。
<?php
function aduserlookup ($UserName)
{
include_once 'config.php';
$ldapconn = ldap_connect("ldap://<IP>:389") or die("Could not connect to the ldap server");
if($ldapconn) {
$r = @ldap_bind($ldapconn, $ldapuser."@test.com", $ldappass);
$sr=ldap_search($ldapconn, "OU=Employees,OU=Users,DC=test,DC=com",
"cn=" . $UserName);
$info = ldap_get_entries($ldapconn, $sr);
ldap_close($ldapconn);
return $info;
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}
}
$user = aduserlookup('test');
$directreports = $user[0]['directreports'];
echo '<pre>';
var_dump($directreports);
echo '</pre>';
foreach ($directreports as $key => $value)
{
$directreports = substr($value, 0, strpos($value, ","));
$directreports = strstr($directreports, '=');
$directreports = str_replace('=', '', $directreports);
$directreports1 = aduserlookup('\'' . $directreports . '\'');
echo $directreports1 . "<br>";
}
?>
答案 0 :(得分:1)
如果您使用的是Microsoft Active Directory,并且如果我了解您要查找的内容, 您可以使用此查询Query All users that report to a department manager or their subordinates
(manager:1.2.840.113556.1.4.1941:=CN=manager,OU=users,DC=willeke,DC=com)
DirectReports是服务器生成的用户列表,直接向“经理”报告。列为报告的用户是将属性管理器属性设置为该用户的用户。列表中的每个项目都是代表用户的对象的Linked Attribute。