使用C#从所有Active Directory组中删除用户

时间:2013-05-21 15:43:19

标签: c# .net active-directory

我有一个用C#编写的WCF服务,它对Active Directory中的用户和组对象执行操作。对于此服务可用的其中一项操作,我需要从特定用户中删除所有组。

我能够使用此代码执行此操作,但它需要超过30秒,我想避免扩展超时。

foreach (GroupPrincipal group in user.GetGroups(this._context))
{
   // We've set the primary group to Domain Users so we want to skip this group now.
   if (group.Name.ToUpper().Equals(DOMAIN_USERS.ToUpper()))
   {
      continue;
   }

   // Remove the user and save the group.
   group.Members.Remove(user);
   group.Save();
   group.Dispose();
}

我也试过这段代码,但是我收到AD的错误,说“服务器不愿意执行请求。”

var userEntry = (DirectoryEntry)user.GetUnderlyingObject();
userEntry.Properties["memberOf"].Clear();
userEntry.CommitChanges();
userEntry.Dispose();

如何才能提高第一个代码块的效率?是否有其他方法可以从我未考虑的所有组中删除用户?

0 个答案:

没有答案