2010-12-22 129 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爲我排序問題。

相關問題