Friday, September 16, 2011

Getting all objects from AD

// for getting  ou contents//
public class RecursiveTraversal
{ public string obj;
public void traverse(DirectoryEntry entry,int x)
{ // Check  it is a n ou
if( entry.SchemaClassName=="organizationalUnit" )
{
x++;
obj = obj + " <Node Object_name=\"" + entry.Name.ToString().Substring(3).Replace("&", "&")+"\"" ;
obj = obj + " Object_type=\"" + entry.Name.ToString().Substring(0, 2) + "\"";
obj = obj + " Object_path=\"" + entry.Path.ToString().Replace("&", "&") + "\"";
obj = obj + " Object_level=\"" + Convert.ToString(x).Replace("&", "&") + "\"";
obj = obj + " ";
DirectoryEntry nw =new DirectoryEntry(entry.Path.ToString());
IEnumerator ie = entry.Children.GetEnumerator();
// Ensure that the list is not null
if (ie.MoveNext())
{ obj = obj + ">";
foreach (DirectoryEntry di in nw.Children)
{ traverse(di, x); }
obj = obj + " </Node>";
}
else
{
obj = obj + ">";
obj = obj + " </Node>";
}
}
}
}
//for getting the AD object list .. this is using the RecursiveTraversal class //
[WebMethod]
public XmlDocument get_Activedirectory_object_list(string type)
{
RecursiveTraversal rt = new RecursiveTraversal();
xmlhelp = new Xml_Helper();
if (type == "1")
{
try
{
DirectoryEntry entryRoot = new DirectoryEntry("LDAP://RootDSE");
string dmain = entryRoot.Properties["defaultNamingContext"][0].ToString();
string entry = "<Data StatusText=\"Success\" Count=\"1\" TotalCount=\"1\" ><Row><Object_name>Domain</Object_name> <Object_type>DC</Object_type> <Object_path>LDAP://" + dmain + "</Object_path> <Object_level>0</Object_level></Row></Data> ";
doc.InnerXml = entry;
}
catch (Exception exp)
{
doc = xmlhelp.Get_XML_Document(eh.Call_Exception(exp));
return doc;
}
}
else
{
try
{
DirectoryEntry entryRoot = new DirectoryEntry("LDAP://RootDSE");
string dmain = entryRoot.Properties["defaultNamingContext"][0].ToString();
DirectoryEntry entry = new DirectoryEntry("LDAP://" + dmain);
foreach (DirectoryEntry cd in entry.Children)
{
rt.traverse(cd, 0);
}
DataSet ds1 = new DataSet();
ds1.Tables.Add("ADUsers");
ds1.Tables["ADUsers"].Columns.Add("Components");
DataRow row = ds1.Tables["ADUsers"].NewRow();
ds1.Tables[0].Rows.Add(row);
ds1.Tables[0].Rows[0]["Components"] = rt.obj;
doc = xmlhelp.Get_XML_Document(ds1);
}
catch (Exception ex)
{
doc = xmlhelp.Get_XML_Document(eh.Call_Exception(ex));
return doc;
}
}
return doc;
}

Monday, September 5, 2011

Active Directory Search filter Examples

if (name.Length > 0)

{search_fn = "(givenname=" + name + "*)(sn=" + name + "*)(initials="+name+"*)";}

else

{ search_fn = ""; }

if (ulid.Length > 0)

{ search_ulid = "(samaccountname=" + ulid + "*)";}

else

{search_ulid = "";}

string filter = "(&(&(objectClass=user)(objectCategory=person))" +"(|"+ search_fn + search_ulid + "))";

DirectoryEntry searchRoot = new DirectoryEntry(path);

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = filter;

search.SizeLimit = 50000;

search.PropertiesToLoad.Add("samaccountname");

search.PropertiesToLoad.Add("name");

search.PropertiesToLoad.Add("cn");

search.PropertiesToLoad.Add("givenname");

search.PropertiesToLoad.Add("initials");

search.PropertiesToLoad.Add("sn");

SearchResult result;

ArrayList allUsers = new ArrayList();

ArrayList prop = new ArrayList();

SearchResultCollection resultCol = search.FindAll();

if (resultCol != null)

Friday, June 17, 2011

Search AD Users

First add the reference System.DirectoryServices;


Then add this webservice in the asmx page

[WebMethod]

public DataSet get_users_from_active_directory(string firstname, string innitial, string lastname, string ulid)

{ string path = "";

DataSet ds1 = new DataSet();

try

{

string search_fn = "", search_ln = "", search_ini = "", search_ulid = "";

DirectoryEntry RootAD = new DirectoryEntry("LDAP://RootDSE");

string rootdc = RootAD.Properties["defaultNamingContext"][0].ToString();

string[] spar = new string[1];

spar[0] = "DC=";

string[] DomNames = rootdc.Split(spar, StringSplitOptions.RemoveEmptyEntries);

string objDmn = DomNames[0];

objDmn = objDmn.Replace(",", "");

ds1.Tables.Add("ADUsers");

if (firstname.Length > 0) {

search_fn = "(givenname=" + firstname + "*)"; }

else

{

search_fn = "";

}

if (lastname.Length > 0)

{

search_ln = "(sn=" + lastname + "*)";

}

else

{

search_ln = "";

}

if (innitial.Length > 0)

{

search_ini = "(initials=" + innitial + "*)";

}

else

{

search_ini = "";

}

if (ulid.Length > 0)

{

search_ulid = "(samaccountname=" + ulid + "*)";

}

else

{

search_ulid = "";

}

string filter = "(&(objectClass=user)(objectCategory=person)" + search_fn + search_ln + search_ini + search_ulid + ")";

DirectoryEntry searchRoot = new DirectoryEntry(path);

DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = filter;

search.SizeLimit = 50000;

search.PropertiesToLoad.Add("samaccountname");

search.PropertiesToLoad.Add("name");

search.PropertiesToLoad.Add("cn");

search.PropertiesToLoad.Add("givenname");

search.PropertiesToLoad.Add("initials");

search.PropertiesToLoad.Add("sn");

search.PropertiesToLoad.Add("mail");

search.PropertiesToLoad.Add("homePostalAddress");

search.PropertiesToLoad.Add("title");

search.PropertiesToLoad.Add("company");

search.PropertiesToLoad.Add("st");

search.PropertiesToLoad.Add("l");

search.PropertiesToLoad.Add("co");

search.PropertiesToLoad.Add("postalCode");

search.PropertiesToLoad.Add("telephoneNumber");

search.PropertiesToLoad.Add("otherTelephone");

search.PropertiesToLoad.Add("memberof");

SearchResult result;

ArrayList allUsers = new ArrayList();

ArrayList prop = new ArrayList();

SearchResultCollection resultCol = search.FindAll();

if (resultCol != null)

{

ds1.Tables["ADUsers"].Columns.Add("id");

ds1.Tables["ADUsers"].Columns.Add("ulid");

ds1.Tables["ADUsers"].Columns.Add("firstname");

ds1.Tables["ADUsers"].Columns.Add("initials");

ds1.Tables["ADUsers"].Columns.Add("lastname");

ds1.Tables["ADUsers"].Columns.Add("email");

ds1.Tables["ADUsers"].Columns.Add("postalCode");

ds1.Tables["ADUsers"].Columns.Add("company");

ds1.Tables["ADUsers"].Columns.Add("title");

ds1.Tables["ADUsers"].Columns.Add("cn");

ds1.Tables["ADUsers"].Columns.Add("co");

ds1.Tables["ADUsers"].Columns.Add("homePostalAddress");

ds1.Tables["ADUsers"].Columns.Add("location");

ds1.Tables["ADUsers"].Columns.Add("memberof");

ds1.Tables["ADUsers"].Columns.Add("group");

ds1.Tables["ADUsers"].Columns.Add("Domain");

ds1.Tables["ADUsers"].Columns.Add("dept");

ds1.Tables["ADUsers"].Columns.Add("status");

for (int counter = 0; counter < resultCol.Count; counter++)

{

DataRow row = ds1.Tables["ADUsers"].NewRow();

ds1.Tables[0].Rows.Add(row);

}

for (int counter = 0; counter < resultCol.Count; counter++)

{

result = resultCol[counter];

try { ds1.Tables["ADUsers"].Rows[counter]["id"] = counter + 1; }

catch { ds1.Tables["ADUsers"].Rows[counter]["id"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["ulid"] = Convert.ToString(result.Properties["samaccountname"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["ulid"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["firstname"] = Convert.ToString(result.Properties["givenname"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["firstname"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["initials"] = Convert.ToString(result.Properties["initials"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["initials"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["lastname"] = Convert.ToString(result.Properties["sn"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["lastname"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["email"] = Convert.ToString(result.Properties["mail"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["email"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["postalCode"] = Convert.ToString(result.Properties["postalCode"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["postalCode"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["company"] = Convert.ToString(result.Properties["company"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["company"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["title"] = Convert.ToString(result.Properties["title"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["title"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["cn"] = Convert.ToString(result.Properties["cn"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["cn"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["co"] = Convert.ToString(result.Properties["co"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["co"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["homePostalAddress"] = Convert.ToString(result.Properties["homePostalAddress"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["homePostalAddress"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["location"] = Convert.ToString(result.Properties["l"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["location"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["memberof"] = Convert.ToString(result.Properties["memberof"][0]); }

catch { ds1.Tables["ADUsers"].Rows[counter]["memberof"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["group"] = ""; }

catch { ds1.Tables["ADUsers"].Rows[counter]["group"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["Domain"] = objDmn; }

catch { ds1.Tables["ADUsers"].Rows[counter]["Domain"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["dept"] = ""; }

catch { ds1.Tables["ADUsers"].Rows[counter]["dept"] = null; }

try { ds1.Tables["ADUsers"].Rows[counter]["status"] = "1"; }

catch { ds1.Tables["ADUsers"].Rows[counter]["status"] = null; }

}

}

else

{

}

ds1.AcceptChanges();

}

catch { }

return ds1;

}