0

我正在使用 PHP Adldap2 库 ( https://github.com/Adldap2/Adldap2 ) 开发一个项目,我需要从 Active Directory 中检索特定 OU 中的子 OU 列表。

这就是我尝试过的:

$ad->search()
   ->whereEquals(
       ActiveDirectory::OBJECT_CATEGORY,
       ActiveDirectory::ORGANIZATIONAL_UNIT_LONG
   )
   ->whereEndsWith('dn', 'OU=myou,DC=mycompany,DC=com')
   ->get();

虽然第一个过滤器有效并检索所有 OU,但第二个过滤器无效并返回一个空数组。我也尝试使用'distinguishedname'而不是'dn'in whereEndsWith,结果相同。

如何才能做到这一点?

4

1 回答 1

0

在做了一些研究和实验后,我想出了这段代码:

$config = Adldap::getConfiguration();
$baseDn = new Adldap\Objects\DistinguishedName($config->getBaseDn());
$departmentsDn = $baseDn->addOu('myou');
$search = Adldap::search()->setDn($departmentsDn->get());
$entries = $search->whereEquals(ActiveDirectory::OBJECT_CATEGORY, ActiveDirectory::ORGANIZATIONAL_UNIT_LONG)->get();

我不确定这是否是最好的解决方案,但它确实有效。

PS:我使用 Laravel adldap 门面,这就是为什么 adldap 调用是静态的。

于 2015-09-20T13:30:21.877 回答