Hello Dear Frinez,

Here is the blog how to create a Active directory users and how to create the mail box for the Active directory users on Exchange Server 2007. It also explains how to disable the mail box for a user and how to remove a user from the mail box as well in the Active Directory Using C# Coding.



using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ActiveDs;
using System.DirectoryServices;
using System.EnterpriseServices;
using System.Runtime.InteropServices;
using System.Management.Instrumentation;
using System.Management;
using System.Management.Automation.Runspaces;
using System.Management.Automation.Host;
using Microsoft.PowerShell.Commands;
using System.Management.Automation;
using System.Security;
using System.Collections.ObjectModel;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string sLDAP = ConfigurationManager.AppSettings["LDAP"].ToString();
ArrayList arr = new ArrayList();
arr = GetAllADDomainUsers(sLDAP);
DropDownList1.DataSource = arr;
DropDownList1.DataBind();
}

}
protected void butCreateUser_Click(object sender, EventArgs e)
{
string sLDAP= ConfigurationManager.AppSettings["LDAP"].ToString();


CreateUser(txtDispName.Text,txtFname.Text, txtLname.Text, sLDAP);
}

private void CreateUser(string sSamName, string sFistName, string sLast_Name, string sBaseContainer)
{

string sUserName = ConfigurationManager.AppSettings["Ser_UserName"].ToString();
string sPass = ConfigurationManager.AppSettings["Ser_Password"].ToString();


string sError = "";

try
{

DirectoryEntry user, oCont;



oCont = new DirectoryEntry(sBaseContainer, sUserName, sPass, AuthenticationTypes.Secure); //, null, null, AuthenticationTypes.Secure);

IADsContainer oDSCont = null;

IADsUser oUser = null;

user = oCont.Children.Add("cn=" + sFistName, "user");

oDSCont = oCont.NativeObject as IADsContainer;

oUser = oDSCont.Create("user", string.Format("CN={0} {1}", sFistName, sLast_Name)) as IADsUser;

oUser.Put("sn", sLast_Name);

oUser.Put("givenname", sFistName);

oUser.Put("samaccountname", sSamName);

oUser.Put("description", "Sample Test Description");

oUser.Put("displayname", sSamName);

oUser.Put("userPrincipalName", sFistName + "@cgxchange.net");

oUser.SetInfo();

oUser.AccountDisabled = false;

oUser.SetInfo();

Response.Write("User Created Successfully!!!");







}

catch (Exception ex)
{
sError = ex.Message;

Response.Write("Failed to create user");

Response.Write(ex.Message);
}
finally
{
ArrayList arr = new ArrayList();
arr = GetAllADDomainUsers(sBaseContainer);
DropDownList1.DataSource = arr;
DropDownList1.DataBind();
}
}



public ArrayList GetAllADDomainUsers(string domainpath)
{
ArrayList allUsers = new ArrayList();
string sUserName = ConfigurationManager.AppSettings["Ser_UserName"].ToString();
string sPass = ConfigurationManager.AppSettings["Ser_Password"].ToString();
DirectoryEntry searchRoot = new DirectoryEntry(domainpath,sUserName,sPass,AuthenticationTypes.Secure);
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = "(&(objectClass=user)(objectCategory=person))";
search.PropertiesToLoad.Add("displayname");

SearchResult result;
SearchResultCollection resultCol = search.FindAll();
if (resultCol != null)
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
if (result.Properties.Contains("displayname"))
{
allUsers.Add((String)result.Properties["displayname"][0]);
}
}
}
return allUsers;
}










protected void butCreateMailBox_Click(object sender, EventArgs e)
{
try
{
//Create a Runespace and add commands
RunspaceConfiguration runspaceConfig = RunspaceConfiguration.Create();
PSSnapInException snapEX = null;
System.Management.Automation.PSSnapInInfo snampInfo = runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapEX);
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfig);
runspace.Open();

//Creates a pipeline
Pipeline pipeLine = runspace.CreatePipeline();

using (pipeLine)
{

//creates a command
Command createMailbox = new Command("Enable-Mailbox");
createMailbox.Parameters.Add("Identity", Session["User"].ToString());

// now you must pass secure string
string pword = "CGvak123";
char[] passwordChars = pword.ToCharArray();
SecureString password = new SecureString();
foreach (char c in passwordChars)
{
password.AppendChar(c);
}


createMailbox.Parameters.Add("Database", "CGVAK-XCHANGE\\First Storage Group\\Mailbox Database");

//set other mailbox parameters here

pipeLine.Commands.Add(createMailbox);

Collection<PSObject> result = pipeLine.Invoke();


}

//closes connections
pipeLine = null;
runspace.Close();
runspace = null;
Response.Write("Mail Box Created Successfully!!!");
}

catch (Exception E)
{
Response.Write(E.ToString());
}



}




protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["User"] = DropDownList1.SelectedItem.Text;
}
protected void butRemoveMaiBox_Click(object sender, EventArgs e)
{
try
{
//Create a Runespace and add commands
RunspaceConfiguration runspaceConfig = RunspaceConfiguration.Create();
PSSnapInException snapEX = null;
System.Management.Automation.PSSnapInInfo snampInfo = runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapEX);
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfig);
runspace.Open();

//Creates a pipeline
Pipeline pipeLine = runspace.CreatePipeline();

using (pipeLine)
{

//creates a command
Command createMailbox = new Command("Disable-Mailbox");
createMailbox.Parameters.Add("Identity", Session["User"].ToString());
createMailbox.Parameters.Add("Confirm", false);

pipeLine.Commands.Add(createMailbox);

Collection<PSObject> result = pipeLine.Invoke();


}

//closes connections
pipeLine = null;
runspace.Close();
runspace = null;
Response.Write("Mail Box Removed Successfully!!!");
}

catch (Exception E)
{
Response.Write(E.ToString());
}

}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
//Create a Runespace and add commands
RunspaceConfiguration runspaceConfig = RunspaceConfiguration.Create();
PSSnapInException snapEX = null;
System.Management.Automation.PSSnapInInfo snampInfo = runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapEX);
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfig);
runspace.Open();

//Creates a pipeline
Pipeline pipeLine = runspace.CreatePipeline();

using (pipeLine)
{

//creates a command
Command createMailbox = new Command("Remove-Mailbox");
createMailbox.Parameters.Add("Identity", Session["User"].ToString());
createMailbox.Parameters.Add("Confirm", false);

pipeLine.Commands.Add(createMailbox);

Collection<PSObject> result = pipeLine.Invoke();


}

//closes connections
pipeLine = null;
runspace.Close();
runspace = null;
Response.Write("User Removed Successfully from Active Directory!!!");
}

catch (Exception E)
{
Response.Write(E.ToString());
}

}
}


Thanks,


D.Kannan MCAD.,MCT.