Esempio n. 1
0
        public static void UpdateDirectoryObjectProperties(DirectoryObjectCollection exportedItems, DirectoryBindingInfo targetDirectoryBindingInfo)
        {
            DirectoryObjectCollection directoryObjectCollection;

            using (SearchResultCollection schema = OrganizationMigrationManager.GetSchema(null, "(|(objectClass=attributeSchema)(objectClass=classSchema))", targetDirectoryBindingInfo))
            {
                directoryObjectCollection = new DirectoryObjectCollection("Schema", schema);
            }
            foreach (DirectoryObject directoryObject in exportedItems)
            {
                using (ActiveDirectorySchemaClass activeDirectorySchemaClass = ActiveDirectorySchemaClass.FindByName(targetDirectoryBindingInfo.GetDirectoryContext(DirectoryContextType.Forest), directoryObject.Properties["objectclass"][directoryObject.Properties["objectclass"].Values.Count - 1].ToString()))
                {
                    foreach (object obj in activeDirectorySchemaClass.MandatoryProperties)
                    {
                        ActiveDirectorySchemaProperty activeDirectorySchemaProperty = (ActiveDirectorySchemaProperty)obj;
                        if (directoryObject.Properties.Contains(activeDirectorySchemaProperty.Name))
                        {
                            directoryObject.Properties[activeDirectorySchemaProperty.Name].IsRequired = true;
                        }
                    }
                    foreach (object obj2 in activeDirectorySchemaClass.GetAllProperties())
                    {
                        ActiveDirectorySchemaProperty activeDirectorySchemaProperty2 = (ActiveDirectorySchemaProperty)obj2;
                        if (directoryObject.Properties.Contains(activeDirectorySchemaProperty2.Name))
                        {
                            directoryObject.Properties[activeDirectorySchemaProperty2.Name].Syntax = activeDirectorySchemaProperty2.Syntax;
                        }
                    }
                }
                foreach (DirectoryProperty directoryProperty in directoryObject.Properties)
                {
                    DirectoryObject directoryObjectByLdapDisplayName = directoryObjectCollection.GetDirectoryObjectByLdapDisplayName(directoryProperty.Name);
                    if (directoryObjectByLdapDisplayName != null)
                    {
                        if (directoryObjectByLdapDisplayName.Properties.Contains("linkID") && directoryObjectByLdapDisplayName.Properties["linkID"].Values != null && int.Parse(directoryObjectByLdapDisplayName.Properties["linkID"][0].ToString()) % 2 != 0)
                        {
                            directoryProperty.IsBackLink = true;
                        }
                        if (directoryObjectByLdapDisplayName.Properties.Contains("attributeSyntax") && directoryObjectByLdapDisplayName.Properties["attributeSyntax"].Values != null && directoryObjectByLdapDisplayName.Properties["attributeSyntax"][0].ToString().CompareTo("2.5.5.1") == 0)
                        {
                            directoryProperty.IsLink = true;
                        }
                        if (directoryObjectByLdapDisplayName.Properties.Contains("systemOnly") && directoryObjectByLdapDisplayName.Properties["systemOnly"].Values != null && directoryObjectByLdapDisplayName.Properties["systemOnly"][0].ToString().ToLower() == "true")
                        {
                            directoryProperty.IsSystemOnly = true;
                        }
                    }
                }
            }
        }
        protected override void InternalProcessRecord()
        {
            if (this.Data == null)
            {
                throw new ArgumentNullException("Data");
            }
            TaskLogger.LogEnter();
            this.directoryInfo = new DirectoryBindingInfo((NetworkCredential)this.Credential);
            DirectoryObjectCollection organizationalUnit = this.Data.OrganizationalUnit;

            organizationalUnit.AddRange(this.Data.ConfigurationUnit);
            OrganizationConfigurationTree organizationConfigurationTree = OrganizationMigrationManager.CalculateImportOrder(organizationalUnit);

            organizationConfigurationTree.WriteVerboseDelegate = new Task.TaskVerboseLoggingDelegate(base.WriteVerbose);
            organizationConfigurationTree.WriteErrorDelegate   = new Task.TaskErrorLoggingDelegate(base.WriteError);
            organizationConfigurationTree.WriteWarningDelegate = new Task.TaskWarningLoggingDelegate(this.WriteWarning);
            OrganizationMigrationManager.UpdateDirectoryObjectProperties(organizationalUnit, this.directoryInfo);
            OrganizationMigrationManager.Import(this.directoryInfo, organizationalUnit, organizationConfigurationTree, this.Data.SourceFqdn, this.directoryInfo.Credential.Domain, this.Data.RootOrgName, base.RootOrgContainerId.ToString(), this.Data.SourceADSite, this.site.Name);
            TaskLogger.LogExit();
        }