簡體   English   中英

在Active Directory上進行LDAP搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM