2

Я использую подход ниже, чтобы запрашивать членов из больших групп AD.получить SamAccountName из больших групп AD с помощью DirectorySearcher

try 
{ 
    DirectoryEntry entry = new DirectoryEntry("LDAP://CN=My Distribution List,OU=Distribution Lists,DC=Fabrikam,DC=com"); 
    DirectorySearcher searcher = new DirectorySearcher(entry); 
    searcher.Filter = "(objectClass=*)"; 

    uint rangeStep = 1000; 
    uint rangeLow = 0; 
    uint rangeHigh = rangeLow + (rangeStep - 1); 
    bool lastQuery = false; 
    bool quitLoop = false; 

    do 
    { 
     string attributeWithRange; 
     if(!lastQuery) 
     { 
      attributeWithRange = String.Format("member;range={0}-{1}", rangeLow, rangeHigh); 
     } 
     else 
     { 
      attributeWithRange = String.Format("member;range={0}-*", rangeLow); 
     }   
     searcher.PropertiesToLoad.Clear(); 
     searcher.PropertiesToLoad.Add(attributeWithRange); 
     SearchResult results = searcher.FindOne(); 
     foreach(string res in results.Properties.PropertyNames) 
     { 
      System.Diagnostics.Debug.WriteLine(res.ToString()); 
     } 
     if(results.Properties.Contains(attributeWithRange)) 
     { 
      foreach(object obj in results.Properties[attributeWithRange]) 
      { 
       Console.WriteLine(obj.GetType()); 
       if(obj.GetType().Equals(typeof(System.String))) 
       { 
       } 
       else if (obj.GetType().Equals(typeof(System.Int32))) 
       { 
       } 
       Console.WriteLine(obj.ToString()); 
      } 
      if(lastQuery) 
      { 
       quitLoop = true; 
      } 
     } 
     else 
     { 
      lastQuery = true; 
     } 
     if(!lastQuery) 
     { 
      rangeLow = rangeHigh + 1; 
      rangeHigh = rangeLow + (rangeStep - 1); 
     } 
    } 
    while(!quitLoop); 
} 
catch(Exception ex) 
{ 
    // Handle exception ex. 
} 

Здесь я хотел бы получить SamAccountName членов, а вместе с их distinguishedName.Also У меня есть несколько групп, которые содержат поперечины домена. Не могли бы вы помочь.

+0

Любая помощь будет очень благодарна – gokul731

+0

Не могли бы вы высказать свою окончательную версию? Помог ли ответ? –

ответ

2

Чтобы получить значение любого атрибута, вам обычно необходимо вызвать DirectoryEntry.Properties [PropertyName] .Value, например.

var x = results.Properties["distinguishedName"].Value 

Для некоторых индексных значений может потребоваться для обеспечения свойств индекса [PropertyName] [X] .Value

Если значение не заполняется по умолчанию в результате, возможно, потребуется, чтобы заставить его для загрузки с использованием DirectorySearcher.PropertiesToLoad.Add (PropertyName);