C# 如何以编程方式将广告组添加到SharePoint 2010 SPGroup?
一直试图以编程方式将广告组添加到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.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")