使用AccountManagement将多个用户快速添加到AD组中

本文关键字:添加 AD 组中 用户 AccountManagement 使用 | 更新日期: 2023-09-27 18:20:37

我有大量的用户需要添加到AD组中。我将所有用户SAMAccountNames存储在一个数据网格视图中。

下面的代码运行缓慢。当我调用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

使用AccountManagement将多个用户快速添加到AD组中

如果在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);
          }
     }
}