Получение пользователей определённой группы из Active Directory - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. В своей программе я могу получить всех пользователей из AD
 private void Gusers_Click(object sender, EventArgs e)
        {
            textBox1.Text = Directory.Name.ToString();
            DirectorySearcher search = new DirectorySearcher(Directory);
            search.Filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))";//all users
             search.Filter = "";
            search.SearchScope = SearchScope.Subtree;
            foreach (SearchResult result in search.FindAll())
            {
                listBox1.Items.Add(result.GetDirectoryEntry().Name.ToString());
            }
            textBox2.Text = listBox1.Items.Count.ToString();
        }
А так же все группы которые есть на сервере AD
 private void GGroups_Click(object sender, EventArgs e)
        {
            textBox2.Text = Directory.Name.ToString();
            DirectorySearcher search = new DirectorySearcher(Directory);
            search.Filter = "(objectClass=Group)";//all groups
            search.Filter = "";
            search.SearchScope = SearchScope.Subtree;
            foreach (SearchResult result in search.FindAll())
            {
                listBox2.Items.Add(result.GetDirectoryEntry().Name.ToString());
            }
            textBox2.Text = listBox1.Items.Count.ToString();
        }
Здесь я пытаюсь получить всех пользователей группы IVT-14... Вот моя попытка, но я ничего не получаю, подскажите где может быть ошибка?
 private void GUsers_in_Groups_Click(object sender, EventArgs e)
        {
            textBox1.Text = Directory.Name.ToString();
            DirectorySearcher search = new DirectorySearcher(Directory);
            //search.Filter = "(memberOf:1.2.840.113556.1.4.1941:=cn=IVT-14,dc=itm, dc=sibsiu, dc=ru)";
            search.Filter = "";
            search.SearchScope = SearchScope.Subtree;
            foreach (SearchResult result in search.FindAll())
            {
                listBox1.Items.Add(result.GetDirectoryEntry().Name.ToString());
            }
            textBox2.Text = listBox1.Items.Count.ToString();
        }
Подскажите пожалуйста, как мне получить всех пользователей определённой группы?

Решение задачи: «Получение пользователей определённой группы из Active Directory»

textual
Листинг программы
private SearchResult GetRecord(string filter)
        {
            try
            {
                    using (var searcher = new DirectorySearcher(Directory))
                    {
                        searcher.Filter = filter;
                        var results = searcher.FindOne();
                        return results;
                    }
                
            }
            catch (DirectoryServicesCOMException ex)
            {
                throw new Exception(ex.ExtendedErrorMessage, ex);
            }
        }
 
private SearchResult GetRecords(string filter)
        {
            try
            {
                    using (var searcher = new DirectorySearcher(Directory))
                    {
                        searcher.Filter = filter;
                        var results = searcher.FindAll();
                        return results;
                    }
                
            }
            catch (DirectoryServicesCOMException ex)
            {
                throw new Exception(ex.ExtendedErrorMessage, ex);
            }
        }
 
// использование
string filter = string.Format("(&(objectCategory=group)(cn={0}))", parentGroupName);
var group = GetRecord (filter);
var distName = result.Properties["distinguishedname"][0] as string;
filter = string.Format("(&(memberof={0})(objectCategory=person)(|(objectClass=user)(objectClass=contact)))", distName);
var users = GetRecords(filter);
// profit

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы