using System.DirectoryServices;
- Skapa först ett DirectoryEntry object och binda till AD-trädet. Detta entry används sedan som sökrot för DirectorySearcher.
DirectoryEntry de = new DirectoryEntry("LDAP://ad.domain.lan/ou=startorg, dc=domain, dc=lan", "användarnamn", "lösenord");
- Skapa sedan ett sökfilter. AD bygger på LDAP-protokollet så LDAP sökningar är kompatibla. Mer information angående sök filter hittar du här: http://msdn.microsoft.com/en-us/library/aa746475.aspx
string filter = "(&(objectClass=OrganizationalUnit)(ou=Namn här*))";
SearchResultCollection src = null;
try {
- använd using här annars kommer directorysearcher att leva kvar väldigt länge och ta upp connections vilket kan leda till stora problem.
using (DirectorySearcher ds = new DirectorySearcher(de, filter)) {
src = ds.FindAll();
}
} catch {
- stäng root entryt om något går snett. Väldigt viktigt! Och disposa searchresult. Samma sak här det blir hängande connections kvar mot trädet.
de.Close();
src.Dispose();
}
if (src != null) {
foreach (SearchResult sr in src) {
- I searchresult ligger sedan alla hittade entries, väldigt smidigt.
DirectoryEntry deFound = sr.GetDirectoryEntry();
MessageBox.Show(deFound.Guid.ToString());
}
}
- Rensa upp connections mot trädet.
src.Dispose();
de.Close();
Hela koden:
DirectoryEntry de = new DirectoryEntry("LDAP://ad.domain.lan/ou=startorg, dc=domain, dc=lan", "användarnamn", "lösenord");
string filter = "(&(objectClass=OrganizationalUnit)(ou=Namn här*))";
SearchResultCollection src = null;
try {
using (DirectorySearcher ds = new DirectorySearcher(de, filter)) {
src = ds.FindAll();
}
} catch {
de.Close();
src.Dispose();
}
if (src != null) {
foreach (SearchResult sr in src) {
DirectoryEntry deFound = sr.GetDirectoryEntry();
MessageBox.Show(deFound.Guid.ToString());
}
}
src.Dispose();
de.Close();
1 kommentar:
vad jag letade efter, tack
Skicka en kommentar