I have the following code that gets the members of a distribution list but if there’s a another list within it I’d like to get the members from it too.
I’m new, I don’t know I could make it recursive.
Try
Dim path As String = String.Empty
path = "LDAP://...."
Dim de As DirectoryEntry = New DirectoryEntry(path)
Dim ds As DirectorySearcher = New DirectorySearcher(de)
ds.PropertiesToLoad.Clear()
ds.PropertiesToLoad.Add("member")
ds.Filter = "CN=DL NAME"
Dim results As SearchResultCollection
results = ds.FindAll
Dim result As SearchResult
Dim members As String = ""
For Each result In results
For Each member As String In result.GetDirectoryEntry.Properties("member")
Dim selIndex As Integer = member.IndexOf("CN=") + 3
Dim selEnd As Integer = member.IndexOf("OU") - 3
members &= member.Substring(selIndex, selEnd).Replace("\\\\", "").Replace("\\", "").Replace(",", "") & vbCrLf
Next
Next
Console.WriteLine(members)
results.Dispose()
Catch ex As Exception
Console.WriteLine(ex.Message.ToString)
End Try
public static ArrayList GetAllUsers()
{
ArrayList _Users = new ArrayList();
try
{
DirectoryEntry _DirectoryEntryRoot = new DirectoryEntry("LDAP://...");
DirectorySearcher _DirectorySearcher = new DirectorySearcher(_DirectoryEntryRoot);
_DirectorySearcher.PropertiesToLoad.Add("CN");
_DirectorySearcher.PropertiesToLoad.Add("givenName"); // user first name
_DirectorySearcher.PropertiesToLoad.Add("SN"); // user last name
_DirectorySearcher.PropertiesToLoad.Add("mail"); // user email
_DirectorySearcher.PropertiesToLoad.Add("SAMAccountName"); // user login name
_DirectorySearcher.Filter = "(&(objectCategory=person)(objectClass=user))";
foreach (SearchResult _SearchResult in _DirectorySearcher.FindAll())
{
_Users.Add(_SearchResult.Properties["CN"][0] + "(" + _SearchResult.Properties["SAMAccountName"][0] + ")");
}
_Users.Sort();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return _Users;
}
Public Shared Function GetAllUsers() As ArrayList
Dim _Users As New ArrayList()
Try
Dim _DirectoryEntryRoot As New DirectoryEntry("LDAP://...")
Dim _DirectorySearcher As New DirectorySearcher(_DirectoryEntryRoot)
_DirectorySearcher.PropertiesToLoad.Add("CN")
_DirectorySearcher.PropertiesToLoad.Add("givenName")
_DirectorySearcher.PropertiesToLoad.Add("SN")
_DirectorySearcher.PropertiesToLoad.Add("mail")
_DirectorySearcher.PropertiesToLoad.Add("SAMAccountName")
_DirectorySearcher.Filter = "(&(objectCategory=person)(objectClass=user))"
For Each _SearchResult As SearchResult In _DirectorySearcher.FindAll()
_Users.Add(_SearchResult.Properties("CN")(0) + "(" + _SearchResult.Properties("SAMAccountName")(0) + ")")
Next
_Users.Sort()
Catch e As Exception
Console.WriteLine(e.Message)
End Try
Return _Users
End Function