Я могу легко получить список OU из AD нашего домена, но я хочу только захватить OU с учетными записями пользователей.Показывать Active Directory OU, содержащие учетные записи пользователей
В настоящее время я захватываю список OU, а затем просматриваю каждый, чтобы получить список пользователей и счет, но для обработки всех этих данных может потребоваться около 30 секунд.
Я надеялся, что есть еще более быстрый способ выполнить ту же задачу.
Public Sub GetActiveDirectoryOuList()
Dim de As DirectoryEntry = Nothing
Dim ds As DirectorySearcher = Nothing
Dim results As SearchResultCollection = Nothing
Try
de = New DirectoryEntry("LDAP://DC=csileasing,DC=com")
ds = New DirectorySearcher(de, "(objectClass=organizationalUnit)")
results = ds.FindAll
If results.Count = 0 Then Exit Try
For Each result As SearchResult In results
Dim count As Integer = GetUserCountForOU(result.Properties("distinguishedName")(0).ToString)
If count > 0 Then
Dim ou As New OrgUnitInfo
ou.DistinguisedName = result.Properties("distinguishedName")(0).ToString
ou.Name = result.Properties("name")(0).ToString
ou.UsersCount = count
adOrgUnitList.Add(ou)
End If
Next
Catch ex As Exception
'MessageBox.Show(ex.Message)
Finally
If ds IsNot Nothing Then ds.Dispose()
If de IsNot Nothing Then de.Dispose()
If results IsNot Nothing Then results.Dispose()
End Try
End Sub
Вы можете кэшировать результат где-то и аннулировать кеш в определенном расписании или на основе определенного запроса на аннулирование кеша. Затем, когда вам нужно получить информацию, прочитайте ее из кеша. –
Есть ли способ получить счетчик пользователей для OU без чтения в полном списке пользователей, а затем сделать счет? Чтение всех пользователей от каждого из подразделений в AD - это та часть, которая ведется навсегда. – JoshF