Exemple #1
0
        private static void ModifyBatchGroups(KeyedOguObjectCollection groups, int startIndex, int batchSize, SynchronizeContext context)
        {
            //Key是AD Guid,Value是Ogu ID
            Dictionary <string, string> adToOguMapping = GetADToOguMappingFromGroups(groups, startIndex, batchSize, context);

            string[] propertiesToGet            = { "objectguid", "member" };
            IEnumerable <SearchResult> adGroups = SynchronizeHelper.GetSearchResultsByIDs(context.ADHelper, adToOguMapping.Keys, propertiesToGet, batchSize);

            foreach (SearchResult adGroup in adGroups)
            {
                SynchronizeContext.Current.ExtendLockTime();

                string guid = AttributeHelper.Hex((byte[])adGroup.Properties["objectguid"][0]);

                ADGroupMemberCollection adGroupMembers = new ADGroupMemberCollection(adGroup.Properties["member"], new string[] { "objectGUID" });

                Dictionary <string, ADObjectWrapper> adMemberDict = adGroupMembers.ToDictionary(o => o.NativeGuid);
                IGroup oguGroup = (IGroup)groups[adToOguMapping[guid]];

                if (IsSameMembers(oguGroup.Members, adMemberDict) == false)
                {
                    SyncGroupMembers(oguGroup, adGroup, context);
                }
            }
        }
Exemple #2
0
        private static void FillGroupMembersByOguIDs(IEnumerable <string> oguObjectIDs, PropertyValueCollection adGroupMembers, SynchronizeContext context)
        {
            IEnumerable <SearchResult> result = SynchronizeHelper.GetSearchResultsByIDs(context.ADHelper, context.IDMapper.GetMappedADObjectIDs(oguObjectIDs),
                                                                                        new string[] { "distinguishedName" }, oguObjectIDs.Count());

            foreach (SearchResult sr in result)
            {
                SynchronizeContext.Current.ExtendLockTime();

                adGroupMembers.Add(sr.Properties["distinguishedName"][0]);
            }
        }