c# - ¿Cómo agregar el grupo AD a SharePoint 2010 SPGroup mediante programación?
sharepoint-2010 (4)
He intentado agregar un grupo de AD a un SPGroup mediante programación y no está funcionando.
He intentado:
SPGroup.AddUsers("myADgroup");
y
SPGroupCollection.Add(groupName, currentUser, "myADgroup", groupDescription);
Lo he intentado tanto con dominio como sin él.
¿Algunas ideas?
Erm, no hay método SPGroup.AddUsers ("myAdGroup"). Ni siquiera hay un método AddUser () con ese formato.
Has probado:
SPGroup g = web.AssociatedMemberGroup;
SPUser u = web.EnsureUser("DOMAIN//myADgroup");
g.AddUser(u);
El bit EnsureUser asegura que el grupo AD se agrega como usuario de SPWeb, por lo que puede asignar derechos.
Hola, no hay métodos para agregar ahora el grupo AD.
Primero debe crear un grupo, y luego agregar usuarios a ese grupo.
using (SPSite spSite = new SPSite("http://localhost"))
{
using (SPWeb spWeb = spSite.OpenWeb())
{
SPGroupCollection spGrps = spWeb.SiteGroups;
SPUser uGrpOwner = spWeb.CurrentUser;
SPUser uGrpDefMember = spWeb.CurrentUser;
string sGrpName = "GrupeName";
spGrps.Add(sGrpName, uGrpOwner, uGrpDefMember, "Decription");
SPGroup spGrp = spGrps[sGrpName];
List<SPUser> spUsersFromAD = YouFunctionGetUserFromAD();
foreach(SPUser spUser in spUsersFromAD){
spGrp.AddUser(spUser);
}
spWeb.Update();
}
}
Este es un seguimiento de la respuesta de Andy Burn:
Desde PowerShell, inicialmente intenté lo siguiente:
$web = Get-SPWeb http://localhost
$web.EnsureUser("domain/test group")
Esto no funcionó, lo cual fue desconcertante.
Un poco más de experimentación y encontré que el siguiente sí funcionó (Power Users es un grupo integrado):
$web.EnsureUser("builtin/power users")
$web.EnsureUser("power users")
$web.EnsureUser("test group")
Luego me di cuenta de que tenía un valor diferente para el Nombre (con alias como DisplayName en PowerShell), resulta que había utilizado diferentes valores en Active Directory para ''Nombre de grupo'' y ''Nombre de grupo (anterior a Windows 2000)''.
El nombre del grupo funcionaba solo, pero con el prefijo de dominio que necesitaba para usar el nombre anterior a Windows 2000.
Con esto, pude hacer que lo siguiente funcionara:
$web.EnsureUser("domain/pre2000 test group")
Por lo tanto, si todavía tiene problemas, verifique la coherencia entre los dos nombres de grupo en AD.
También tuve un problema al llamar a SPWeb.EnsureUser con un grupo de AD. En mi caso hubo cierta confusión porque el grupo en cuestión tenía un nombre para mostrar que era diferente de su sAMAccountName subyacente. Llamar a EnsureUser con el sAMAccountName en lugar del nombre para mostrar me solucionó el problema.