Как программно добавить группу AD в SharePoint 2010 SPGroup?

Попытка добавить группу AD в SPGroup программно, и она не работает.

Я пробовал:

SPGroup.AddUsers("myADgroup");

а также

SPGroupCollection.Add(groupName, currentUser, "myADgroup", groupDescription);

Я пробовал как с доменом, так и без.

Есть идеи?

4 ответа

Эээ, нет метода SPGroup.AddUsers("myAdGroup"). Нет даже метода AddUser() с этим форматом.

Ты пытался:

SPGroup g = web.AssociatedMemberGroup;
SPUser u = web.EnsureUser("DOMAIN\\myADgroup");
g.AddUser(u);

Бит EnsureUser гарантирует, что группа AD будет добавлена ​​в качестве пользователя SPWeb, чтобы вы могли затем назначать права.

Привет нет методов для добавления группы AD.

Сначала необходимо создать группу, а затем добавить пользователей в эту группу.

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();
    }
}

Это продолжение ответа Энди Берна:

Из PowerShell я изначально пробовал следующее:

$web = Get-SPWeb http://localhost
$web.EnsureUser("domain\test group")

Это не сработало, что было загадочно.

Еще несколько экспериментов, и я обнаружил, что сработало следующее (опытные пользователи - встроенная группа):

$web.EnsureUser("builtin\power users")
$web.EnsureUser("power users")
$web.EnsureUser("test group")

Затем я заметил, что у меня было другое значение для имени (псевдоним DisplayName в PowerShell) - получается, что я использовал разные значения в Active Directory для "Имя группы" и "Имя группы (до Windows 2000)".

Имя группы работало само по себе, но с префиксом домена мне нужно было использовать имя до Windows 2000.

С этим я смог заставить работать следующее:

$web.EnsureUser("domain\pre2000 test group")

Итак, если у вас все еще есть проблемы, проверьте соответствие между двумя именами групп в AD.

У меня также возникла проблема с вызовом SPWeb.EnsureUser с группой AD. В моем случае была некоторая путаница, потому что у рассматриваемой группы было отображаемое имя, которое отличалось от основного sAMAccountName. Вызов EnsureUser с именем sAMAccountName, а не с отображаемым именем, решил проблему для меня.

Другие вопросы по тегам