2009-06-23 18 views
1

Est-ce que quelqu'un sait quelle propriété je peux demander dans une requête ADSI qui retournerait l'OU parent de l'objet? Je sais que je peux lier à l'objet AD, puis utiliser object.Parent pour renvoyer son unité d'organisation parente, mais si je demande "parent" dans une requête ADSI, il renvoie une requête invalide que je ne ferais pas si nécessaire.Requête ADSI pour renvoyer le parent d'un objet

(à savoir "SELECT sAMAccountName, distinguishedName, objectSid, groupType FROM 'LDAP://DC=Contoso,DC=COM' WHERE objectCategory='group'")

Répondre

0

Regardez la propriété distinguishedName, et jeter quoi que ce soit avant la première virgule de délimitation. Ce sera le distinguishedName de l'objet parent (qui peut ne pas être une unité d'organisation, il peut s'agir d'un conteneur ou d'un autre type d'objet)

Voici une fonction permettant d'obtenir le distinguishedName parent d'un nom distinguishedName. Il gère les valeurs distinguishedName contenant des virgules échappées. chaîne publique GetParent (chaîne sDistinguishedName) { int iPos = sDistinguishedName.IndexOf (',');

if (iPos > 0) 
    { 
     while (iPos > -1) 
     { 
      //go back from iPos to find all slashes. 
      int iFound = 0; 
      for (int iSearch = iPos - 1; iPos >= 0 && sDistinguishedName[iSearch] == '\\'; iSearch--) 
      { 
       iFound++; 
      } 

      if (iFound % 2 == 0) 
      { 
       return sDistinguishedName.Substring(iPos + 1, sDistinguishedName.Length - iPos - 1); 
      } 
      else 
      { 
       iPos = sDistinguishedName.IndexOf(',', iPos + 1); 
      } 
     } 
    } 

    return sDistinguishedName; 
}