Как отфильтровать пользователей в Active Directory для неактивных пользователей в .Net? - PullRequest
0 голосов
/ 13 августа 2011

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

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

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Если вы используете .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 Управление принципами безопасности каталогов в .NET Framework 3.5 , в котором хорошо показано, как наилучшим образом использовать новые функции в System.DirectoryServices.AccountManagement

0 голосов
/ 18 августа 2011

Возьмите 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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...