Как получить юзеров из Active Directory группы?
От: Synapse  
Дата: 12.10.10 12:56
Оценка:
Хотелось бы обойтись без парсинга свойств
var ds = new DirectorySearcher(new DirectoryEntry("LDAP://SRV")) {Filter = String.Format("(objectsid={0})", sid)};
var g = ds.FindOne();
for(int i = 0; i < g.Properties["member"].Count; i++) //Это работает, но не нравится
{
    Console.WriteLine(g.Properties["member"][i]);
}

var gs = new DirectorySearcher(g.GetDirectoryEntry());
gs.SearchScope = SearchScope.Subtree;
foreach(SearchResult result in gs.FindAll()) //Ничего не находит
{
    Console.WriteLine(result.GetDirectoryEntry().Path);
}
Re: Как получить юзеров из Active Directory группы?
От: lerthe61 Украина  
Дата: 12.10.10 13:35
Оценка:
Здравствуйте, Synapse, Вы писали:

S>Хотелось бы обойтись без парсинга свойств

S>
S>var ds = new DirectorySearcher(new DirectoryEntry("LDAP://SRV")) {Filter = String.Format("(objectsid={0})", sid)};
S>var g = ds.FindOne();
S>for(int i = 0; i < g.Properties["member"].Count; i++) //Это работает, но не нравится
S>{
S>    Console.WriteLine(g.Properties["member"][i]);
S>}

S>var gs = new DirectorySearcher(g.GetDirectoryEntry());
S>gs.SearchScope = SearchScope.Subtree;
S>foreach(SearchResult result in gs.FindAll()) //Ничего не находит
S>{
S>    Console.WriteLine(result.GetDirectoryEntry().Path);
S>}
S>


А собственно почему второй вариант должен работать? Пользователи не "находяться" в группе, они ей "принадлежат". А FindAll находит все, что находиться в объекте gs (и ниже, так как указан флаг Subtree).
Re[2]: Как получить юзеров из Active Directory группы?
От: Synapse  
Дата: 12.10.10 17:05
Оценка:
Здравствуйте, lerthe61, Вы писали:

L>Здравствуйте, Synapse, Вы писали:


S>>Хотелось бы обойтись без парсинга свойств

S>>
S>>var ds = new DirectorySearcher(new DirectoryEntry("LDAP://SRV")) {Filter = String.Format("(objectsid={0})", sid)};
S>>var g = ds.FindOne();
S>>for(int i = 0; i < g.Properties["member"].Count; i++) //Это работает, но не нравится
S>>{
S>>    Console.WriteLine(g.Properties["member"][i]);
S>>}

S>>var gs = new DirectorySearcher(g.GetDirectoryEntry());
S>>gs.SearchScope = SearchScope.Subtree;
S>>foreach(SearchResult result in gs.FindAll()) //Ничего не находит
S>>{
S>>    Console.WriteLine(result.GetDirectoryEntry().Path);
S>>}
S>>


L>А собственно почему второй вариант должен работать? Пользователи не "находяться" в группе, они ей "принадлежат". А FindAll находит все, что находиться в объекте gs (и ниже, так как указан флаг Subtree).


Спасибо, я разобрался. memberOf={TargetGroupDName} работает (с оговорками на странные глюки нашего домена).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.