2011-08-12 3 views
0

Я хочу, чтобы создать фильтр для извлечения всех активных пользователей в Active Directory, я использовал этот фильтр, но он не работалКак фильтровать пользователей в Active Directory для InActive Users .Net?

searcher.Filter = string.Format(
       System.Threading.Thread.CurrentThread.CurrentCulture, 
       "(&(|(samaccountname={0})(mailnickname={0}))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))", 
       alias); 

ответ

1

Если вы на .NET 3.5 и выше, вы должны проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM).

Вы можете использовать PrincipalSearcher и «запрос по образцу» принципал сделать ваш поиск:

// create your domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// define a "query-by-example" principal - here, we search for a UserPrincipal 
// which is not enabled (not active) 
UserPrincipal qbeUser = new UserPrincipal(ctx); 
qbeUser.Enabled = false; 

// create your principal searcher passing in the QBE principal  
PrincipalSearcher srch = new PrincipalSearcher(qbeUser); 

// find all matches 
foreach(var found in srch.FindAll()) 
{ 
    // do whatever here - "found" is of type "Principal" - it could be user, group, computer.....   
} 

Если вы еще не - абсолютно читать статью MSDN Managing Directory Security Principals in the .NET Framework 3.5, который показывает хорошо, как сделать лучшее использование новых функций в System.DirectoryServices.AccountManagement

+0

Спасибо за ваш ответ, но я хотел бы знать, как добавить фильтр для условия (| (SamAccountName = { 0}) (mailnickname = {0})) Я могу установить свойство для имени samaccount, но не для mailnickname. и в моем списке есть некоторые пользователи с mailnickname, как заданный псевдоним. – nipiv

0

Захватите adfind с www.joeware.net, и вы можете использовать его для тестирования фильтров - adfind -f "<your filter here>" -default сделает трюк.

То, что вы вставили выглядит точным, хотя я бы в дальнейшем сферу его пользователей, как это:

(&(objectClass=user)(objectCategory=person)(|(samaccountname={0})(mailnickname={0}))(!(userAccountControl:1.2.840.113556.1.4.803:=2))) 
Смежные вопросы