1

我有一个用 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();

我该怎么做才能使第一个代码块更高效?是否有另一种方法可以从我没有考虑过的所有组中删除用户?

4

0 回答 0