Le nœud à partir duquel vous demander de commencer la recherche (la Distinction Nom du nod)
La portée de votre recherche (de base, un niveau, de la sous-arborescence)
Le filtre de votre recherche (ex: (objectClass=user))
Les attributs que vous souhaitez récupérer.
Dans Active Directory, il n'existe pas de façon "naturelle" à exclure OU à partir d'une recherche récursive. Concernant LDAP, sur le point de vue théorique, il existe ExtensibleMatch qui permettent ce que vous voulez faire, mais c'est pas pris en charge dans Active Directory.
Je suis en train de faire quelque chose de similaire. J'ai d'abord utiliser une recherche pour 'objectclass=organizationalunit" avec la portée de la recherche mis à "un niveau'. Le Code ressemble à ceci:
DirectoryEntry oDE = new DirectoryEntry("LDAP://DC=ChildDomain,DC=RootDomain")
using (DirectorySearcher ds = new DirectorySearcher(oDE))
{
ds.PropertiesToLoad.Add("dn");
ds.SearchScope = SearchScope.OneLevel;
ds.Filter = "(objectClass=OrganizationalUnit)";
ds.PageSize = 30;
Puis-je utiliser une boucle foreach pour parcourir les résultats et de comparer le nom unique de chaque résultat avec celui OU je suis l'exclusion. Si l'unité d'organisation du dn matchs, je peux continuer à le résultat suivant. Si non, alors je prends un peu d'action.
Faire quelque chose de similaire à quoi? En général, les réponses devraient autonome, citant et lier à tous les autres réponses ou des ressources externes qu'ils utilisent.
Pour moi, j'avais besoin d'exclure facilement désactivé les utilisateurs de résultats de recherche ldap ou autre chose qui permettrait de montrer à ces comptes d'utilisateur à côté de permis (actif) comptes. J'ai refusé le contenu de la liste d'accès pour les Utilisateurs Handicapés OU qui sort de l'unité d'organisation visible, mais le contenu ne le sont pas. Le résultat est que les recherches de personnes à partir de, disons, lié clients Mac à l'aide de l'application Contacts n'y aura plus de "fantôme" des utilisateurs.
Depuis le serveur d'annuaire est non-conforme (pc, les notes, les AD ne prend pas en charge extensible correspondent aux filtres
et est donc non-conforme), Si il y a des attributs avec des valeurs d'identifier les entrées comme
appartenant à A et B2, exclure ceux avec le filtre de recherche. Par exemple, si les entrées
les actions subalternes à A ont un objectClass avec la valeur in-A, votre filtre pourrait exclure ceux qui
une recherche composé de base de l'objet ou=users, dc=domain, dc=co, dc=uk, portée whole subtree,
filtre (!(objectClass=in-A)), et la liste des attributs que vous désirez. Un filtre semblable pourrait être
construits de manière à exclure les entrées de A et B2 simultanément.
Le seul moyen est de définir un attribut spécial, uniquement sur le voulais ou la pas voulu OU. Vous pouvez utiliser le pagerattribut pour un utilisateur, ou le physicalLocationObject pour un ordinateur, comme ils sont peu utilisés et peuvent généralement être "abusé" pour gérer ce genre de problèmes (n'oubliez pas de confirmer ce qu'ils sont vraiment inutilisés ou pas!!). Vous pouvez alors faire une recherche de filtrage de ces attributs pour exclure celles OU, comme: (&(objectclass=user)(!(pager=*)))
Bien sûr, c'est inefficace et que la bonne solution est la réorganisation de l'LDAP/AD structure pour s'adapter à ce qui est nécessaire.
J'ai peut-être plus de la simplification de ce mais ne pourriez-vous aussi tout simplement refus de liste de lecture/d'accès aux unités d'organisation qui vous souhaitez exclure de la requête? En supposant que vous utilisez un compte de service spécifique pour effectuer la recherche cela devrait fonctionner.
Une recherche LDAP est composé de 4 éléments :
Dans Active Directory, il n'existe pas de façon "naturelle" à exclure OU à partir d'une recherche récursive. Concernant LDAP, sur le point de vue théorique, il existe ExtensibleMatch qui permettent ce que vous voulez faire, mais c'est pas pris en charge dans Active Directory.
OriginalL'auteur JPBlanc
Je suis en train de faire quelque chose de similaire. J'ai d'abord utiliser une recherche pour 'objectclass=organizationalunit" avec la portée de la recherche mis à "un niveau'. Le Code ressemble à ceci:
Puis-je utiliser une boucle foreach pour parcourir les résultats et de comparer le nom unique de chaque résultat avec celui OU je suis l'exclusion. Si l'unité d'organisation du dn matchs, je peux continuer à le résultat suivant. Si non, alors je prends un peu d'action.
OriginalL'auteur Greg
Pour moi, j'avais besoin d'exclure facilement désactivé les utilisateurs de résultats de recherche ldap ou autre chose qui permettrait de montrer à ces comptes d'utilisateur à côté de permis (actif) comptes. J'ai refusé le contenu de la liste d'accès pour les Utilisateurs Handicapés OU qui sort de l'unité d'organisation visible, mais le contenu ne le sont pas. Le résultat est que les recherches de personnes à partir de, disons, lié clients Mac à l'aide de l'application Contacts n'y aura plus de "fantôme" des utilisateurs.
OriginalL'auteur ramos1053
Depuis le serveur d'annuaire est non-conforme (pc, les notes, les AD ne prend pas en charge extensible correspondent aux filtres
et est donc non-conforme), Si il y a des attributs avec des valeurs d'identifier les entrées comme
appartenant à
A
etB2
, exclure ceux avec le filtre de recherche. Par exemple, si les entréesles actions subalternes à
A
ont unobjectClass
avec la valeurin-A
, votre filtre pourrait exclure ceux quiune recherche composé de base de l'objet
ou=users, dc=domain, dc=co, dc=uk
, portéewhole subtree
,filtre
(!(objectClass=in-A))
, et la liste des attributs que vous désirez. Un filtre semblable pourrait êtreconstruits de manière à exclure les entrées de
A
etB2
simultanément.Pour en savoir plus sur la recherche et les filtres de recherche, voir LDAP: Maîtrise de Recherche
Les filtres.
OriginalL'auteur Terry Gardner
Le seul moyen est de définir un attribut spécial, uniquement sur le voulais ou la pas voulu OU. Vous pouvez utiliser le
pager
attribut pour un utilisateur, ou le physicalLocationObject pour un ordinateur, comme ils sont peu utilisés et peuvent généralement être "abusé" pour gérer ce genre de problèmes (n'oubliez pas de confirmer ce qu'ils sont vraiment inutilisés ou pas!!). Vous pouvez alors faire une recherche de filtrage de ces attributs pour exclure celles OU, comme:(&(objectclass=user)(!(pager=*)))
Bien sûr, c'est inefficace et que la bonne solution est la réorganisation de l'LDAP/AD structure pour s'adapter à ce qui est nécessaire.
OriginalL'auteur higuita
J'ai peut-être plus de la simplification de ce mais ne pourriez-vous aussi tout simplement refus de liste de lecture/d'accès aux unités d'organisation qui vous souhaitez exclure de la requête? En supposant que vous utilisez un compte de service spécifique pour effectuer la recherche cela devrait fonctionner.
OriginalL'auteur condonate