0 Pluspunkte 0 Minuspunkte

Ich lese Attribute von AD Objekten.

System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry(ldapPath);

System.DirectoryServices.DirectorySearcher searcher = new DirectorySearcher(entry)
{
    Filter = $"(sAMAccountName={member})"
};

SearchResult result = searcher.FindOne();

string distinguishedName = result.Properties["distinguishedName"][0].ToString();
string extensionAttribute1 = result.Properties["extensionAttribute1"].ToString();

Wie kann ich das Attribut "extensionAttribute1" auslesen?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du musst das benutzerdefinierte Attribut zur PropertiesToLoad Liste des DirectorySearcher Objekt hinzufügen. 

searcher.PropertiesToLoad.Add("extensionAttribute1");
von (776 Punkte)  
Jetzt wird zwar das extensionAttribute1 geladen aber dafür wird der distinguishedName nicht mehr gefunden.
Standardmäßig lädt der DirectorySearcher nur eine begrenzte Menge von Attributen. Wenn du benutzerdefinierte Attribute (wie extensionAttribute1) auslesen möchtest, musst du jedes benötigte Attribut explizit zur PropertiesToLoad Liste hinzufügen. Sobald du ein Attribut zur PropertiesToLoad Liste hinzufügst, werden ausschließlich die in dieser Liste angegebenen Attribute geladen. Auch Standardattribute wie distinguishedName müssen explizit angegeben werden, da sie sonst nicht im Suchergebnis enthalten sind.


DirectoryEntry entry = new DirectoryEntry(ldapPath);

DirectorySearcher searcher = new DirectorySearcher(entry)
{
    Filter = $"(sAMAccountName={member})"
};

searcher.PropertiesToLoad.Add("distinguishedName");
searcher.PropertiesToLoad.Add("extensionAttribute1");

SearchResult result = searcher.FindOne();

string distinguishedName = result.Properties["distinguishedName"][0].ToString();
string extensionAttribute1 = result.Properties["extensionAttribute1"][0].ToString();