Насколько Я знаю, что не существует веб-службы или рабочего процесса, которые выполняют эту задачу. Метод SPUtility.GetPrincipalsInGroup
, предложенный @ HW90, указывает, что вы определенно находитесь в правильном направлении.
Я предлагаю вам написать пользовательскую задачу таймера SharePoint (SPJobDefinition). Выполните требуемое действие в SPJobDefinition.Execute Method:
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));
}
}
}
}