如果这个问题没有被问过一百万次,我会感到惊讶,但我还没有找到解决方案。
我正在使用 PHP“ldap_search”列出 Active Directory 用户,并希望使用以下方法显示某些“操作属性”,例如创建用户的日期 (createTimeStamp):
$filter = "CN=*";
$result = ldap_search($ldap, $ldap_dn, $filter) or exit("Unable to search LDAP server");
这可行,我得到了一个用户列表,但是没有返回createTimeStamp 。我读过这是因为它被归类为“操作属性”,不属于正常结果集。显然,只有在特别请求时才会返回这些属性。所以我然后尝试了这个:
$filter = "CN=*";
$attr = array("samaccountname","createTimeStamp");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
这仍然没有返回createTimeStamp的值。所以我的问题是:是否可能以某种方式将 Active Directory 配置为不返回这些值,如果是,是否可以更改?
编辑:如果有帮助,我们可以检索大整数/间隔格式的lastLogon,但不能检索UTC 编码时间格式的createTimeStamp;我不确定这有多相关,因为我们遇到的问题是根本没有返回数据。
编辑 2:我使用 LDIFDE ( http://support.microsoft.com/kb/237677 ) 使用此行搜索 Active Directory:
ldifde -f ldaptest.txt -s myServer -d "DC=domain,DC=com" -p subtree -r "(sAMAccountName=*BWayne*)" -l "createTimeStamp"
...它返回这个:
dn: CN=Wayne Bruce,OU=Section....
changetype: add
createTimeStamp: 20100406101951.0Z
因此,如果这是一个访问问题,那么它似乎只会影响 PHP 脚本。