0

我们需要定期将 Active Directory 组中的用户添加到共享点组。换句话说,我们需要将 AD 组中的用户同步到 Share Point 组。

我们正在研究执行此操作的服务/工作流程。

请帮助我们解决这个问题

4

2 回答 2

1

Perhabs you can use SPUtility.GetPrincipalsInGroup (MSDN)

bool reachedMaxCount;
SPWeb web = SPContext.Current.Web;
int limit = 100;
int group = "Domain\\SecurityGroup";
SPPrincipalInfo[] users = SPUtility.GetPrincipalsInGroup(web, group, limit, out reachedMaxCount);

There is a good example how to use: https://stackoverflow.com/a/6153943/655293

于 2012-05-23T08:27:34.710 回答
0

据我所知,没有开箱即用的 Web 服务或工作流来执行此任务。SPUtility.GetPrincipalsInGroup@HW90 建议的方法绝对为您指明了正确的方向。

我建议您编写自定义 SharePoint 计时器作业 ( SPJobDefinition )。在SPJobDefinition.Execute 方法中执行所需的操作:

public override void Execute(Guid targetInstanceId)
{
  using (SPSite site = new SPSite("http://server/the/site/collection")
  {
    using (SPWeb web = site.OpenWeb())
    {
      int limit = 100;
      string group = "Domain\\SecurityGroup";
      SPPrincipalInfo[] users = SPUtility.GetPrincipalsInGroup(web, group, limit, out reachedMaxCount);

      SPGroup siteGroup = web.SiteGroups["TheGroup"];

      // clear the group
      for (int i = siteGroup.Users.Count - 1; i >= 0; i--)
      {
        siteGroup.Users.Remove(i);
      }

      foreach (SPPrincipalInfo pi in users)
      {
        siteGroup.AddUser(web.EnsureUser(pi.LoginName));
      }
    }
  }
}
于 2012-05-23T09:12:17.513 回答