2009-06-29 3 views
1

Jeder unserer Benutzer wird einer primären Organisationseinheit (OU) zugewiesen, abhängig davon, in welchem ​​globalen Büro sie sich befinden. OU enthält alle Mitarbeiter in unserem Büro in Chicago.So erhalten Sie die Adresse der Straßenadresse einer Organisationseinheit im Windows Active Directory mit LDAP in C# .Net

Mit C# und .net 3.5 ist meine Aufgabe, alle diese Benutzer zu extrahieren.

Wenn sich die Benutzer nicht in einem Satelliten- oder Home-Office befinden, sind ihre Adresse, Stadt, Bundesland usw. leer, aber die Organisationseinheit enthält diese Details. Wenn Sie in der Active Directory-Oberfläche von Windows klicken, können Sie mit der rechten Maustaste auf die Organisationseinheit klicken und Eigenschaften auswählen, um alle diese Informationen wie für einen Benutzer zu speichern. Wenn ich jedoch versuche, auf diese Eigenschaften zuzugreifen, wie ich einen Benutzer verwende, erhalte ich einen Objektreferenzfehler, der darauf hindeutet, dass diese Attribute nicht auf die gleiche Weise für eine Organisationseinheit existieren, die sie für einen Benutzer ausführen.

Wie kann ich auf diese Standortparameter von einem OU-Objekt aus zugreifen?

Hier ist ein Beispiel für den Code, den ich benutze, der streetaddress als Beispiel zeigt, die Anweisung, die versucht, den Wert von streetaddress von der OU zuzuweisen, schlägt fehl, wo die Zuweisung von dem Associate erfolgreich ist.

Antwort

3

Wenn Sie das Street-Feld auf der Registerkarte Allgemein in Active Directory-Benutzer & Computer für einen Benutzer ändern, wird der Wert im streetAddress-Attribut im Verzeichnis gespeichert. Wenn Sie jedoch dasselbe Feld für eine Organisationseinheit ändern, wird dieser Wert im street-Attribut dieser Organisationseinheit im Verzeichnis gespeichert.

Dies liegt daran, dass OU-Objekte nicht (wie im Active Directory-Standardschema definiert) das streetAddress-Attribut enthalten dürfen.

So (nicht Ihr Code weiter analysiert zu haben), wenn Sie ouProperties["streetaddress"]-ouProperties["street"] ändern werden Sie das Ergebnis bekommen könnten Sie suchen.

+0

Kennen Sie eine erschöpfende Liste von Eigenschaften dieser Objekte? Ich hatte nicht viel Glück, eine solche Liste zu finden. Ich kann mir vorstellen, dass es noch andere wichtige Unterschiede zwischen Benutzern und OU-Eigenschaften gibt. – kscott

+2

Ja, die einfachste Möglichkeit, sie zu finden, wäre die Verwendung des Snap-Ins Active Directory-Benutzer und -Computer auf einem Windows Server 2008-Computer (dort gibt es eine spezielle Registerkarte namens Attribute-Editor, die alle Attribute für das Objekt anzeigt) um erweiterte Funktionen zu aktivieren, damit es angezeigt wird). Wenn Sie Vista verwenden, können Sie die Remoteserver-Verwaltungstools für denselben Effekt herunterladen. Eine dritte Option wäre die Verwendung von adsiedit.msc und die Bindung an ein Benutzerobjekt. Sie können ADSIEdit auch zum Durchsuchen des Active Directory-Schemas verwenden. –

1

Um die ObjectReference-Ausnahme zu vermeiden, sollten Sie überprüfen, ob die Sammlung das erforderliche Attribut enthält, indem Sie die Contains (string) -Methode verwenden. Siehe here

Ich glaube, dass AD nur wertvolle Attribute für ein Objekt gespeichert, wenn ein bestimmtes Attribut nie einen Wert zugewiesen wurde, wird es nicht verfügbar sein.

+0

Ja, sicherlich würde dies dazu beitragen, das Auslösen des Objektreferenzfehlers zu vermeiden, da Sie korrekt sind, dass die Eigenschaft tatsächlich kein Teil des Objekts wäre, wenn sie keinen Wert hätte.In diesem Fall ist bekannt, dass das Objekt einen Wert für dieses Feld hat, nur die Syntax dieses Felds wird falsch verwendet, was das größere Problem ist, das behoben werden müsste. Vielen Dank für Ihre Antwort. – kscott

0

fand ich die AD-Schema Referenzen auf:

http://download.microsoft.com/download/a/e/6/ae6e4142-aa58-45c6-8dcf-a657e5900cd3/%5BMS-ADA1%5D.pdf A-L http://download.microsoft.com/download/a/e/6/ae6e4142-aa58-45c6-8dcf-a657e5900cd3/%5BMS-ADA2%5D.pdf Gerade M http://download.microsoft.com/download/a/e/6/ae6e4142-aa58-45c6-8dcf-a657e5900cd3/%5BMS-ADA3%5D.pdf N-Z http://download.microsoft.com/download/a/e/6/ae6e4142-aa58-45c6-8dcf-a657e5900cd3/%5BMS-ADTS%5D.pdf AD technische Informationen

, dass diese Frage für Sie beantworten würde.

Auch die win2k8 ADUC MMC Snap-Ins, wenn Sie Ansicht Erweiterte Funktionen auswählen, (aktivieren Sie das Häkchen) dann Sie den Attribut-Editor erhalten. (Etwas, das ConsoleOne für eDirectory schon seit fast einem Jahrzehnt hat!).

Eine kleine Anmerkung, in AD-Schema, die erste Zeichen ist immer niedriger Fall, und ich laufe mit ausreichend hohen Auflösung, dass das unteren Gehäuse L's sind hart wie L's zu sehen. (Brauchen Sie eine bessere Bildschirmschriftart, aber mea culpa).