C# 如何以编程方式将广告组添加到SharePoint 2010 SPGroup?

C# 如何以编程方式将广告组添加到SharePoint 2010 SPGroup?,c#,sharepoint-2010,spgroup,C#,Sharepoint 2010,Spgroup,一直试图以编程方式将广告组添加到SPGroup,但它不起作用 我试过: SPGroup.AddUsers("myADgroup"); 及 我尝试过域名和非域名 有什么想法吗?呃,没有SPGroup.AddUsers(“myAdGroup”)方法。甚至没有这种格式的方法 您是否尝试过: SPGroup g = web.AssociatedMemberGroup; SPUser u = web.EnsureUser("DOMAIN\\myADgroup"); g.AddUser(u); 该位确保

一直试图以编程方式将广告组添加到SPGroup,但它不起作用

我试过:

SPGroup.AddUsers("myADgroup");

我尝试过域名和非域名


有什么想法吗?

呃,没有SPGroup.AddUsers(“myAdGroup”)方法。甚至没有这种格式的方法

您是否尝试过:

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

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

您好,目前没有添加广告组的方法

您需要先创建组A,然后再向该组添加用户

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();
    }
}
使用(SPSite SPSite=new SPSite(“http://localhost"))
{
使用(SPWeb SPWeb=spSite.OpenWeb())
{
SPGroupCollection spGrps=spWeb.SiteGroups;
SPUser uGrpOwner=spWeb.CurrentUser;
SPUser UGRPDEFEMBER=spWeb.CurrentUser;
字符串sGrpName=“GrupeName”;
spGrps.Add(sGrpName、uGrpOwner、UGRPDEF成员,“说明”);
spGrp=spGrps[sGrpName];
List spUsersFromAD=YouFunctionGetUserFromAD();
foreach(SPUser-SPUser-in-SPUser-sfromad){
spGrp.AddUser(spUser);
}
spWeb.Update();
}
}

这是安迪·伯恩回答的后续内容:

在PowerShell中,我最初尝试了以下操作:

$web = Get-SPWeb http://localhost
$web.EnsureUser("domain\test group")
这不起作用,令人费解

通过更多的实验,我发现以下方法确实有效(超级用户是一个内置的群体):

然后我注意到我的名称有一个不同的值(在PowerShell中别名为DisplayName)——结果是我在Active Directory中对“组名”和“组名(Windows 2000之前)”使用了不同的值

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

有了这一点,我能够实现以下目标:

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

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

我还遇到了使用AD组调用SPWeb.EnsureUser的问题。在我的例子中,出现了一些混乱,因为所讨论的组的显示名称与其基础的sAMAccountName不同。用sAMAccountName而不是显示名称调用EnsureUser为我解决了这个问题。

是的,我尝试过EnsureUser,但没有成功。返回时未找到用户。嗯。我不是广告方面的专家,但我建议,如果EnsureReuser返回时未找到用户,那么您的组名在广告中是错误的/不同的。我测试了该代码,它在这台机器上工作。是否值得在AD中检查名称,以及您指定的域和名称。另外,请注意名称(“\\”)中的转义斜杠
$web.EnsureUser("builtin\power users")
$web.EnsureUser("power users")
$web.EnsureUser("test group")
$web.EnsureUser("domain\pre2000 test group")