예제 #1
0
        public IEnumerable <ADItem> EnumADItems(ADSchema filter)
        {
            Queue <DirectoryEntry> queue = new Queue <DirectoryEntry>();

            queue.Enqueue(_root);
            while (queue.Count > 0)
            {
                var entry = queue.Dequeue();
                foreach (DirectoryEntry child in entry.Children)
                {
                    if (child.SchemaClassName == "user")
                    {
                        if ((filter & ADSchema.User) == ADSchema.User)
                        {
                            yield return(CreateADItem(child, ADSchema.User));
                        }
                    }
                    else if (child.SchemaClassName == "group")
                    {
                        if ((filter & ADSchema.Group) == ADSchema.Group)
                        {
                            yield return(CreateADItem(child, ADSchema.Group));
                        }
                    }
                    else if (child.SchemaClassName == "organizationalUnit")
                    {
                        queue.Enqueue(child);
                        if ((filter & ADSchema.OrganizationalUnit) == ADSchema.OrganizationalUnit)
                        {
                            yield return(CreateADItem(child, ADSchema.OrganizationalUnit));
                        }
                    }
                }
            }
        }
예제 #2
0
        internal override AttributeSetRequest ConstructAttributeSetRequest(ICollection <string> requestedExtendedAttr)
        {
            AttributeSetRequest attributeSetRequest = base.ConstructAttributeSetRequest(requestedExtendedAttr);
            ADSchema            aDSchema            = new ADSchema(base.CmdletSessionInfo.ADSessionInfo);

            if (!aDSchema.SchemaProperties.ContainsKey("msDS-hasFullReplicaNCs"))
            {
                attributeSetRequest.DirectoryAttributes.Remove("msDS-hasFullReplicaNCs");
            }
            return(attributeSetRequest);
        }
예제 #3
0
        private ADItem CreateADItem(DirectoryEntry entry, ADSchema schema)
        {
            ADItem item = new ADItem()
            {
                Name        = entry.Properties["SAMAccountName"].Value.ToString(),
                DisplayName = entry.Properties.Contains("displayName") ? entry.Properties["displayName"].Value.ToString() : null,
                Description = entry.Properties.Contains("description") ? entry.Properties["description"].Value.ToString() : null,

                Schema   = schema,
                Id       = entry.Guid.ToString(),
                ParentId = entry.Parent.Guid.ToString()
            };

            return(item);
        }