2010-02-10 4 views
2

내가 일하는 회사 전체에서 각 사용자의 활성 디렉토리에서 속성을 수정해야합니다. 이 코드는 모든 사용자를 확보하는 사용자입니다.Active Directory 사용자를 알파벳 순서로 필터링

 String domain = Properties.Settings.Default.ADConn; 
     String user = Properties.Settings.Default.ADAdmin; 
     String pass = Properties.Settings.Default.ADPass; 

     DirectoryEntry ADEntry = new DirectoryEntry(domain, user, pass); 
     DirectorySearcher ADSearcher = new DirectorySearcher(ADEntry); 
     ADSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";       
     SearchResultCollection allResults = ADSearcher.FindAll();    
     foreach (SearchResult result in allResults) 
     { 
      DirectoryEntry deUser = result.GetDirectoryEntry(); 

      //....Do stuff here 

회사에 많은 사람들이 있기 때문에 사용자를 사전 순으로 분할하고 한 번에 한 명의 사용자를 처리해야합니다. 예를 들어 사용자 [A-G], [H-N], [O-Z]의 속성을 변경합니다. 사용자에게 X에서 Y까지 제공하도록 필터를 수정하려면 어떻게해야합니까?

편집 :

ADSearcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName>=X)(sAMAccountName<=Y))"; 

는 당신의 도움을 주셔서 감사합니다 :
내 최종 결과는 다음을 수행하는 것이 었습니다.

+0

"사용자 X부터 Y"까지는 성 또는 Y가 가능한 성을 가진 사용자를 통해 성 또는 samaccountnames가 X로 시작하는 사용자를 의미합니다. – Aaron

답변

1

저는 OpenLDAP을 사용하기 전에 필터에 익숙하지 않았기 때문에 도움이 될 Search Filter Syntax document을 발견했습니다. 가능한지 생각해보십시오.

(&(objectClass=user)(objectCategory=person)(cn>='a')(cn<='b')) 

알려 주시면 알려드립니다.

+1

편지 주위에 따옴표를 놓아야한다고 생각합니다. 그래서 ** LastName ** 검색은 다음과 같이됩니다 :'(& (objectClass = user) (objectCategory = person) (sn> = m) (sn <= p))'** username ** 검색은' & (objectClass = user) (objectCategoryName = person) (sAMAccountName> = m) (sAMAccountName <= p))' – bluecoder

+0

함께 둘 다 맞습니다. 이것은 완벽하게 작동했습니다. 고맙습니다. – Aaron