Можно ли запросить только тех членов группы, которые также являются группой из AD?Оптимизировать поиск в AD - получить членов группы
Теперь я использую следующий код:
var group = GroupPrincipal.FindByIdentity(ctx, identityType, domainGroup);
if (null != group)
{
var subGroups = group.GetMembers().Where(g => g is GroupPrincipal).Select(g => g.Name);
................
}
Проблема заключается в том, что моя группа имеет большое количество пользователей (более 50 000), в результате запроса работает очень долго. Кроме того, переносится большой объем данных.
Как я могу запросить только прямые подгруппы (а не пользователи) в одном запросе?
EDIT
Я закончил с DirectorySearcher
. Вот мой код завершения:
using (var searcher = new DirectorySearcher(string.Format("(&(objectCategory=group)(objectClass=group)(memberof={0}))", group.DistinguishedName), new[] { "cn" }))
{
searcher.PageSize = 10000;
var results = SafeFindAll(searcher);
foreach (SearchResult result in results)
{
for (int i = 0; i < result.Properties["cn"].Count; i++)
{
subGroups.Add((string)result.Properties["cn"][i]);
}
}
}
Любопытно, какое увеличение производительности вы видите? – X3074861X
@ X3074861X, производительность зависит от количества групп пользователей. Вышеуказанный запрос позволяет пропустить выбор пользователя, потому что я запрашиваю только группы, в результате для некоторых групп производительность сильно возрастает. – Kai