1

我有大量用户需要添加到 AD 组。我将所有用户都SAMAccountNames存储在 datagridview 中。

下面的代码工作但很慢。就好像它在我调用时直接查询每个用户一样g.members.add。有没有更有效的方法来添加它们?

For Each r As DataGridViewRow In dgvFinalUsers.Rows
   Dim userName As String = r.Cells(0).Value
   If Not g.Members.Contains(ctx, IdentityType.SamAccountName, userName) Then
      g.Members.Add(ctx, IdentityType.SamAccountName, userName)
      i += 1
      Debug.Print(i)
   End If
Next
g.save
4

1 回答 1

1

如果您在 For Each 之前将所有存在的用户加载到 List 对象中,然后查看该用户是否存在于 List 中,该怎么办?这样你只查询一次广告?

像这样:

var domainMembers = new List<Principal>();
using (var context = new PrincipalContext( ContextType.Domain ))
{
     GroupPrincipal grp = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Domain Users"); 
     foreach(var user in grp.GetMembers(false))
     {
          if(user)
          {
              domainMembers.add(user);
          }
     }
}
于 2014-09-04T16:53:37.060 回答