Wir hatten ein Skript in PowerShell, wo wir das Active Directory manipuliert haben. Ich habe es jetzt in C# programmiert. Meine Kollegen sagen, dass sie den Domänencontroller in PS angeben mussten, da es sonst passieren kann, dass Sie mit DC A lesen und auf DC B schreiben, was zu Problemen führen könnte.DirectoryEntry und Domain Controller
Muss ich den Domänencontroller wirklich angeben, wenn ich mit DirectorySearcher einen Eintrag suche und ihn manipuliere? Oder ist per Definition derselbe Domänencontroller ein Benutzer, der das Objekt (DirectorySearcher) findet und speichert (CommitChanges)?
Ich denke nicht, da ich es nur im suchenden Teil (DirectoryEntry-Objekt für den DirectorySearcher) angeben kann, aber nicht, wenn es zurück zum AD (CommitChanges) geschrieben wird. Ich nehme also an, dass derselbe DC zum Schreiben verwendet wird wie der zum Lesen verwendete.
Im Folgenden habe ich ein Beispiel, wo ich nach einem bestimmten Eintrag suchen und eine Eigenschaft ändern.
string filter = "(proxyaddresses=SMTP:[email protected])";
string searchOU = "ou=Users,dc=abc,dc=com";
DirectoryEntry entry = new DirectoryEntry("LDAP://" + searchOU);
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = filter;
SearchResult result = search.FindOne();
search.Dispose();
entry.Close();
DirectoryEntry toContact = result.GetDirectoryEntry();
toContact.Properties["showInAddressBook"].Value = addressbook;
toContact.CommitChanges();
toContect.Close();
Während dieser Link, um die Frage beantworten kann, ist es besser, die wesentliche Teile der Antwort hier aufzunehmen und den Link zur Verfügung stellen als Referenz. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/13612911) – techspider
Ja, Sie haben natürlich recht. Entschuldigung, ich werde die Antwort mit einem nützlichen Code aktualisieren. – DrMistry
@DrMistry: Ein Kerl von Microsoft bat mich, DirectorySearcher zu verwenden, weil es flexibler ist. Das Problem ist, dass der Link auch die Frage nach dem Domänencontroller nicht beantwortet. Erinnern sich die Objekte in 'searchResults' an welchen DC sie das Objekt gefunden haben und verwenden dasselbe, wenn ich die gefundenen Objekte aktualisiere? Übrigens: Vorsicht bei der Verwendung von FindAll() Sie müssen die gefundenen Objekte beseitigen, sonst haben Sie ein Speicherleck. – Diver