1
我需要将很多用户添加到AD组中。我将所有用户SAMAccountNames
存储在datagridview中。使用AccountManagement将多个用户添加到AD组*快速*使用AccountManagement
下面的代码工作,但缓慢。就好像在我拨打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
听起来他想将用户添加到AD组,而不是一个inmemory集合。 – 2014-09-04 16:55:11
@WiktorZychla [我跑到类似的问题](http://stackoverflow.com/questions/2409432/improving-performance-of-system-directoryservices-accountmanagement)在我的编码也。 DirectyServices中的很多方法不会缓存“Members”之类的结果,因此每次都会重新查询。将组中当前成员的列表复制到内存集合中,确实会加速'g.Members.Contains'调用。 – 2014-09-04 16:55:57
@WiktorZychla,通过这种方式添加它,每次迭代时他都不必查询AD。因此,加快这一进程。 – 2014-09-04 16:56:48