.net 3.5 - sacar - Encontrar a qué grupos/listas de distribución pertenece un usuario específico en el directorio activo
listar usuarios de un grupo active directory powershell (2)
Digamos que estoy en
OU=Groups,DC=contaco,DC=com,ct
Puedo encontrar todos los grupos en una sub unidad organizativa, pero la única forma de encontrar todos los grupos a los que pertenece el usuario ''bobdole'' es mirar cada grupo y ver si está en el campo ''miembro''.
Desafortunadamente, cuando miro al usuario ''bobdole'', no veo un campo memberOf que tenga todas estas listas, por lo tanto, tengo que enumerar a través de cada grupo / lista de distribución y ver a qué miembro pertenece.
¿No hay una manera más eficiente de hacer esto? Estoy en c #
Esto devuelve todos los roles (Grupos) a los que pertenece un usuario.
public string[] GetRolesForUser(DirectoryEntry user)
{
user.RefreshCache(new string[] { "tokenGroups" });
var irc = new IdentityReferenceCollection(user.Properties["tokenGroups"].Count);
foreach (byte[] sidBytes in user.Properties["tokenGroups"])
irc.Add(new SecurityIdentifier(sidBytes, 0));
var coll = new StringCollection();
irc = irc.Translate(typeof(NTAccount));
foreach (var ir in irc)
{
if (ir is NTAccount)
{
coll.Add(ir.ToString());
}
}
var accounts = new string[coll.Count];
coll.CopyTo(accounts, 0);
return accounts;
}
Corrígeme si me equivoco, pero estoy bastante seguro de que "tokenGroups" no contiene DistributionGroups, sino solo SecurityGroups / Roles.