[英]php ldap_search in Active Directory root DN - empty results
[英]LDAP Search on Active Directory
我正在嘗試查找所有將在不到30天內到期的帳戶(來自Linux服務器,因此使用ldapsearch)。
這是我發送給AD服務器的請求:
ldapsearch -x -h IP -D“[domain] [user]” - w [password] -b“DC = [DC],DC = [DC]”-s sub“(&(objectCategory = person)(objectClass =用戶)(accountExpires> = 1)(accountExpires <= 30))”
我沒有得到任何名稱,因為所有帳戶似乎都有一個0或2 ^ 63 -1的accountExpires。
當我從Windows PowerShell(在Windows服務器上)啟動此請求時,我得到了正確的答案:
Search-ADAccount -AccountExpiring -TimeSpan 30.00:00:00 | 其中{$ _.ObjectClass -eq'user'} | FT名稱,ObjectClass -A
你能解釋一下為什么我的ldapsearch沒有給出相同的結果嗎?
謝謝 !
accountExpires
屬性的格式是自1601年1月1日(UTC)以來100納秒間隔的數量。 請參閱屬性的以下詳細信息 :
帳戶過期的日期。 此值表示自1601年1月1日(UTC)以來100納秒間隔的數量。 值0或0x7FFFFFFFFFFFFFFF(9223372036854775807)表示帳戶永不過期。
因此,您需要將Linux / Unix時間戳格式化為該格式,以獲得發送到AD的正確值。 它可能是這樣的(原諒糟糕的bash技能......):
# Get the windows timestamp value for 30 days from now...
expires_at=$(($(($(date -d "+30 days" +"%s") * 10000000)) + 116444736000000000))
然后是LDAP過濾器:
(&(objectCategory=person)(objectClass=user)(accountExpires>=1)(accountExpires<=$expires_at))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.