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)); } } } } }
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); }
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); }