2010-12-22 143 views

回答

5

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

你试过:

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

EnsureUser位可以确保在AD组添加为的SPWeb的用户,这样,那么你可以分配权限。

+0

是的,我试过EnsureUser,它没有工作。回来后找不到用户。 – user484483 2010-12-28 23:39:05

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

这是安迪烧伤的回答跟进:

从PowerShell中我最初尝试以下操作:

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

这没有工作,这是令人费解。

一些更多的试验,我发现下面没有工作(超级用户是一个内置组):

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

然后我发现我有名称不同的值(在PowerShell中别名为显示名称) - 事实证明,我在Active Directory中使用了“组名”和“组名(Windows 2000之前)”中的不同值。

组名自身工作,但与域前缀我需要使用Windows 2000以前的名称。

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

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

所以,如果你仍然有问题,您在AD两组名之间的一致性。

0

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

相关问题