private static object EnumEntryItemCallBack(SearchResult sr, ADSearchResultParams asrp, object oParams, ref bool bContinue) { AD2DBTransferContext context = (AD2DBTransferContext)oParams; context.InitialParams.OnBeforeProcessADObject(sr, context.InitialParams, ref bContinue); if (bContinue) { string objName = ADHelper.GetInstance().GetSearchResultPropertyStrValue("name", sr); string objClass = AD2DBHelper.TranslateObjectClass(sr.Properties["objectClass"][1].ToString()); ADHelper helper = ADHelper.GetInstance(); FillContext(context, ADHelper.GetParentRdnSequence(helper.GetSearchResultPropertyStrValue("distinguishedName", sr))); try { switch (objClass) { case "ORGANIZATIONS": InsertOrganizations(sr, context); context.OrganizationsConverted++; break; case "USERS": InsertUser(sr, context); InsertOUUser(sr, context); InsertUsersInfoExtend(sr, context); context.UsersConverted++; break; default: break; } UpdateParentChildrenCounter(context); } catch (System.Exception ex) { string strMsg = string.Format("转换对象\"{0}\"出错,{1}", objName, ex.Message + ex.StackTrace); context.InitialParams.Log.Write(strMsg); } } return null; }
public bool InnerExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, object lastResult, string[] properties) { bool bContinue = true; ADSearchConditions newCondition = new ADSearchConditions(condition); newCondition.Scope = SearchScope.OneLevel; ADSearchResultParams asrp = new ADSearchResultParams(root); asrp.LastResult = lastResult; List <SearchResult> resultList = ExecuteSearch(root, filter, condition, properties); foreach (SearchResult sr in resultList) { if (bContinue) { if (callback != null) { asrp.LastResult = callback(sr, asrp, oParams, ref bContinue); if (bContinue == false) { break; } } string objClass = sr.Properties["objectClass"][1].ToString(); if (string.Compare(objClass, "organizationalUnit", true) == 0) { bContinue = InnerExecuteSearchRecursively(sr.GetDirectoryEntry(), filter, condition, callback, oParams, asrp.LastResult, properties); } } } return(bContinue); }
public bool InnerExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, object lastResult, string[] properties) { bool bContinue = true; ADSearchConditions newCondition = new ADSearchConditions(condition); newCondition.Scope = SearchScope.OneLevel; ADSearchResultParams asrp = new ADSearchResultParams(root); asrp.LastResult = lastResult; List<SearchResult> resultList = ExecuteSearch(root, filter, condition, properties); foreach (SearchResult sr in resultList) { if (bContinue) { if (callback != null) { asrp.LastResult = callback(sr, asrp, oParams, ref bContinue); if (bContinue == false) break; } string objClass = sr.Properties["objectClass"][1].ToString(); if (string.Compare(objClass, "organizationalUnit", true) == 0) { bContinue = InnerExecuteSearchRecursively(sr.GetDirectoryEntry(), filter, condition, callback, oParams, asrp.LastResult, properties); } } } return bContinue; }