如何以编程方式将AD组添加到SharePoint 2010 SPGroup?

时间:2010-12-22 18:47:59

标签: c# sharepoint-2010 spgroup

尝试以编程方式将AD组添加到SPGroup,但它无法正常工作。

我试过了:

SPGroup.AddUsers("myADgroup");

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

我已尝试使用域名和不使用域名。

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

嗯,没有SPGroup.AddUsers(“myAdGroup”)方法。甚至没有使用该格式的AddUser()方法。

你试过了吗?

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

EnsureUser位确保将AD组添加为SPWeb的用户,以便您可以分配权限。

答案 1 :(得分:1)

嗨现在没有方法可以添加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();
    }
}

答案 2 :(得分:1)

这是Andy Burn回答的后续行动:

从PowerShell我最初尝试了以下内容:

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

这不起作用,令人费解。

进行了一些实验,我发现以下内容确实有效(Power Users是内置组):

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

然后我注意到我有一个不同的Name值(在PowerShell中别名为DisplayName) - 事实证明我在Active Directory中使用了不同的值来表示“组名”和“组名”(Windows 2000之前) )”

组名本身就可以工作,但是使用域名前缀我需要使用Windows 2000以前的名称。

有了这个,我能够得到以下工作:

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

因此,如果您仍然遇到问题,请检查AD中两个组名称之间的一致性。

答案 3 :(得分:0)

我在使用AD组调用SPWeb.EnsureUser时也遇到了问题。在我的情况下,有一些混乱,因为有问题的组的显示名称与其底层的sAMAccountName不同。使用sAMAccountName而不是显示名称调用EnsureUser为我排序问题。