Получение пользователей определённой группы из Active Directory - C#
Формулировка задачи:
Доброго времени суток. В своей программе я могу получить всех пользователей из AD
А так же все группы которые есть на сервере AD
Здесь я пытаюсь получить всех пользователей группы IVT-14...
Вот моя попытка, но я ничего не получаю, подскажите где может быть ошибка?
Подскажите пожалуйста, как мне получить всех пользователей определённой группы?
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();
} 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();
} 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