3

一直在尝试以编程方式将 AD 组添加到 SPGroup,但它不起作用。

我试过了:

SPGroup.AddUsers("myADgroup");

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

我已经尝试过使用域和没有域。

有任何想法吗?

4

4 回答 4

5

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

你有没有尝试过:

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

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

于 2010-12-27T11:00:52.900 回答
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")

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

组名可以单独使用,但需要使用域前缀才能使用 Windows 2000 之前的名称。

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

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

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

于 2011-10-20T04:20:45.387 回答
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();
    }
}
于 2011-06-08T11:30:04.733 回答
0

我在使用 AD 组调用 SPWeb.EnsureUser 时也遇到了问题。就我而言,存在一些混淆,因为相关组的显示名称与其基础 sAMAccountName 不同。使用 sAMAccountName 而不是显示名称调用 EnsureUser 为我解决了问题。

于 2012-07-10T06:29:49.830 回答