如何使用 LDAP 過濾字串搜尋已停用的帳戶?

摘要:如果使用 LDAP 過濾字串搜尋已停用的帳戶?

公司都設有 Active Directory 網域,且規模有一定程度或是已運行很久的話,在系統中可能會有不少的已停用 (disabled) 帳戶,這些帳戶日積月累下來可能會有很多個,而且若 AD 網域結構又複雜的話,已停用的帳戶又會被埋在 AD 的各個角落,不過可以利用檢索 AD 的工具來過濾。

要搜尋出停用帳戶的 LDAP 過濾字串為:

DirectorySearcher.Filter = "(!(userAccountControl:1.2.840.113556.1.4.803:=2))";

這個字串可以合併其他的條件一起查詢,像是要使用關鍵字搜尋使用者,又要排除停用的帳戶的話可以這樣下:

DirectorySearcher.Filter = string.Format(
"(&(|(displayName=*{0}*)(sAMAccountName=*{0}*))(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))))", Keywords);