Вы можете перебрать любое количество OU, которое хотите, но вам нужно определить список свойств для загрузки (свойство .PropertiesToLoad
) один раз, прежде чем ваш цикл запускается (это действительно относится ко всемсвойства, которые не будут меняться между вызовами в поиске каталогов - например, область поиска, направление сортировки и т. д. - абсолютно бессмысленно устанавливать их для каждой итерации - установите их один раз и покончите с этим.
' define the list of properties to load for each search result ONCE before the loop
MyDirectorySearcher.PropertiesToLoad.Add("cn")
MyDirectorySearcher.SearchScope = SearchScope.Subtree
MyDirectorySearcher.Sort.Direction = SortDirection.Ascending
MyDirectorySearcher.Sort.PropertyName = "cn"
' *THEN* Loop through OU's until members are found
Do
MyDirectorySearcher.Filter = ("(&(objectCategory=person)(memberof=cn=" & searchStr & ", ou=groups, ou=" & campusGroupArray(j) & ", dc=.., dc=.., dc=.., dc=..))")
MySearchResult = MyDirectorySearcher.FindAll()
j += 1
Loop Until MySearchResult.Count > 0 Or j > campusGroupArray.Length - 1
PropertiesToLoad
просто определяет список свойств, которые будут содержать результаты поиска - это один и тот же список для каждого из поисков, и может содержать имя свойства (например, cn
) только один раз.