I'am de vuelta con mi herramienta de Active Directory ...Obtener una lista de grupos de miembros (memberOf) en Active Directory
I'am tratar de enumerar los grupos en el "miembro de" atributo de un usuario. A continuación se muestra la función que utilizo:
public static DataTable ListGroupsByUser(string selectedOu)
{
DataTable groupListByUser = new DataTable();
String dom = "OU=" + selectedOu + ",OU=XXX,DC=XXX,DCXXX,DC=XXX,DC=XXX";
DirectoryEntry directoryObject = new DirectoryEntry("LDAP://" + dom);
DataColumn column;
DataRow row;
column = new DataColumn();
column.ColumnName = "ID";
groupListByUser.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "User";
groupListByUser.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "Groups";
groupListByUser.Columns.Add(column);
int i = 1;
foreach (DirectoryEntry child in directoryObject.Children)
{
row = groupListByUser.NewRow();
groupListByUser.Rows.Add(row);
row["ID"] = i++;
if (child.Properties["memberOf"].Value != null)
{
row["User"] = child.Properties["sAMAccountName"].Value.ToString();
row["Groups"] = child.Properties["memberOf"].Value.ToString();
}
else
{
row["Groups"] = "blabla";
}
}
return groupListByUser;
}
Devuelve el grupo adecuado para los usuarios que pertenecen a un solo grupo. Tan pronto como Hay más de un grupo, devuelve System.Object [].
¿Cómo puedo hacer para ver todos los grupos?
Gracias Marc, me las arreglé para tratar con usuarios y grupos, lo que no puedo hacer es recorrer la lista de membresías de los usuarios. ¿Merece la pena reconstruir la herramienta con el espacio de nombres accountManagement en lugar de directoryServices? –
@Oliver: Gracias chicos. A pesar de sus consejos, encontré una solución, siguiendo: 'code' if (child.Properties ["memberOf"]. Value! = Null) { foreach (Object memberof en child.Properties ["memberOf"]) { // row ["User"] = child.Properties ["sAMAccountName"]. Value.ToString(); row ["Member Of"] + = memberof.ToString() + "///"; } } else { row ["Member Of"] = "Sin grupo definido"; } –