AD和SharePoint中的Employees组同步

时间:2010-10-18 17:17:02

标签: sharepoint

员工或任何其他AD组与SharePoint 2007的同步

目前,AD和SharePoint都有一个员工组

  • 我们需要一个批处理脚本或工作流,或任何使这些组保持同步的内容
  • 应与Active Directory同步,即Master和SharePoint是副本
  • 它应该每小时自动同步,我们应该能够随时手动执行同步
  • 不应该删除该组并重新填充它。这意味着有一段时间没有人可以访问

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

您是否在SharePoint网站上使用Windows身份验证?

如果你这样做,你不需要一个脚本来保持你的组同步。如果你这样做,他们将保持同步。从AD组中删除用户也会将其从SharePoint组中删除。

您可能会遇到一些延迟,但这可能就是您认为需要脚本的原因(不应超过15分钟)。

如果您匆忙,可以进行IISReset,您应该立即看到您的更改。


如果您没有使用Windows Auth,或者您的SharePoint组与AD组不同,则需要添加同步例程。

你最好的选择可能是每x分钟一些代码(或运行的SSIS包)。在循环中,检查AD组的每个成员。验证它们是否在SharePoint组中。如果不是,请使用以下代码:

using (SPWeb oWebsiteRoot = SPContext.Current.Site.RootWeb)
{
    //Loop through your AD group here
    oWebsiteRoot.AllowUnsafeUpdates = true;
    oWebsiteRoot.Groups["Employee"].AddUser(username, email, fullname, String.Empty);
    oWebsiteRoot.Update();
}

其中Site是您的网站集,用户拥有您需要的所有信息。这将创建SharePoint用户并将其添加到组中。

完成后,请浏览每个SharePoint用户并验证他们是否在AD组中。如果不是,请删除它们:

using (SPWeb oWebsiteRoot = SPContext.Current.Site.RootWeb)
{
    SPGroupCollection collGroups = oWebsiteRoot.SiteGroups;
    SPUser oUser = oWebsiteRoot.Users["User_Name"];

    foreach (SPGroup oGroup in collGroups)
    {
        oGroup.RemoveUser(oUser);
    }
}