我正在使用PHP查询Active Directory。我需要获取指定组中所有成员的一些属性(Office电话和电子邮件)。
我可以获得组中用户的完整CN,例如:
$results = ldap_search($ds,$ldapbase, "cn=" . $group);
$entries = ldap_get_entries($ds, $results);
$members = $entries[0]['member'];
for ($i=0; $i< count($members) -1; $i++) {
$mem = $members[$i];
if($mem != "") {
$groupMembers[] = $mem;
}
}
会给我一组这样的成员:
CN=Testlastname1', Testfirstname1,OU=Personnel,OU=All Staff,DC=domain,DC=domainsuffix
CN=Testlastname2', Testfirstname2,OU=All Staff,DC=domain,DC=domainsuffix
etc...
我的问题是,我如何获取这些结果并查询我需要的属性,即每个属性的办公电话和电子邮件地址?还是我完全错了?
我看到了一些与此接近的事情,以及一些(有些拜占庭式的)我无法工作的例子。我玩过各种过滤器语法,但都没有用。必须有一种方法从成功的组查询中获取单个结果,检索结果所描述的AD对象,并提取所需的属性,但我还没有找到它
非常感谢您的帮助。
BTW-PHP版本5.5.7,在Windows 2008R2、IIS7.5 上使用FastCGI
以下应该以某种方式工作:
foreach ($groupsmembers as $groupmember) {
$result = ldap_search($ds,$groupmember, '*', 'officephone,mail');
$entries = ldap_get_entries($ds, $results);
$users[$groupmember]['officephone'] = $entries[0]['officephone'][0];
$users[$groupmember]['mail'] = $entries[0]['mail'][0];
}
主要的是,您使用检索到的DN(即具有CN=Testlastname1', Testfirstname1,OU=Personnel,OU=All Staff,DC=domai....
的DN)作为搜索基础,然后从中检索电子邮件和办公电话属性。
在(Linux)-命令行上,它看起来像这样:
ldapsearch -h ldap-server -b "CN=Testlastname1, Testfirstname1,OU=Personnel,OU=All Staff,DC=domain,DC=domainsuffix" * mail,officephone
希望对有所帮助