Skip to main content

Scripts to Create users at Active directory from CSV file and create their Mailboxes on Exchange server 2010

 When you are deploying a new infrastructure and the company request to create about 300 users it's very difficult and time consuming to create all of them by using GUI but now we are learing you how to create any number of users with a few commands and a sheets that you already prepare them before visiting the site for deployment process.

It's very simple to do, Just write down the required users on a file like below:


Copy the below stream onto a txt file and rename the extension onto .CSV as "LabUsers.csv"
Code:
GivenName,Surname,samAccountName,DisplayName,Password
Mohamed,Fouad,Mohamed.Fouad,Mohamed Fouad,EgyEng.comPassword1
Mohamed,Taha,Mohamed.Taha,Mohamed Taha,EgyEng.comPassword1
Mohamed,Hassan,Mohamed.Hassan,Mohamed Hassan,EgyEng.comPassword1
Mohamed,Ahmed,Mohamed.Ahmed,Mohamed Ahmed,EgyEng.comPassword1
Mohamed,Ali,Mohamed.Ali,Mohamed Ali,EgyEng.comPassword1
Mohamed,Emad,Mohamed.Emad,Mohamed Emad,EgyEng.comPassword1
after completing the users list then you need the script to run for creating the users.
You can create a new Organization Unit (OU) which named ExchangeUsers
and after running the script you can move the users easily to desired OUs.


Just copy the below stream onto a txt file and rename the extension to .ps1

Code:
# Powershell Script which creates users from a sample CSV File into Active Directory
# Version 1.0
# Author: Mohamed Fouad
# http://www.EgyEng.com
# 
# Compatible with:
# Powershell 1.0 and 2.0
# Windows 2003
# Windows 2008
# Windows 2008 R2
#

function Select-FileDialog 
{
    param([string]$Title,[string]$Directory,[string]$Filter="CSV Files (*.csv)|*.csv")
    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
    $objForm = New-Object System.Windows.Forms.OpenFileDialog
    $objForm.InitialDirectory = $Directory
    $objForm.Filter = $Filter
    $objForm.Title = $Title
    $objForm.ShowHelp = $true
    
    $Show = $objForm.ShowDialog()
    
    If ($Show -eq "OK")
    {
        Return $objForm.FileName
    }
    Else
    {
        Exit
    }
}

$FileName = Select-FileDialog -Title "Import an CSV file" -Directory "c:\"

$ExchangeUsersOU = "OU=ExchangeUsers"

$domain = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$DomainDN = (([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).Domains | ? {$_.Name -eq $domain}).GetDirectoryEntry().distinguishedName
$final = "LDAP://$DomainDN"
$DomainPath = [ADSI]"$final"
$cOU = $DomainPath.Create("OrganizationalUnit",$ExchangeUsersOU)
$cOU.SetInfo()

$UserInformation = Import-Csv $FileName

$OUPath = "LDAP://$ExchangeUsersOU,$DomainDN"
$UserPath = [ADSI]"$OUPath"
Write-Host "---------------------------------------------------------------"
Write-Host "Creating LAB Users"
Write-Host ""
Write-Host "---------------------------------------------------------------"

Foreach ($User in $UserInformation){
    
    $CN = $User.samAccountName
    $SN = $User.Surname
    $Given = $User.givenName
    $samAccountName = $User.samAccountName
    $Display = $User.DisplayName
    
    $LABUser = $UserPath.Create("User","CN=$CN")
    Write-Host "Creating User: $User.samAccountName"
    $LABUser.Put("samAccountName",$samAccountName)
    $LABUser.Put("sn",$SN)
    $LABUser.Put("givenName",$Given)
    $LABUser.Put("displayName",$Display)
    $LABUser.Put("mail","$samAccountName@$domain")
    $LABUser.Put("description", "Lab User - created via Script From Egypt Engineers-EgyEng.com")
    $LABUser.Put("userPrincipalName","$samAccountName@$domain")
    $LABUser.SetInfo()
    
    $Pwrd = $User.Password
    
    $LABUser.psbase.invoke("setPassword",$Pwrd)
    $LABUser.psbase.invokeSet("AccountDisabled",$False)
    $LABUser.psbase.CommitChanges()

}
Write-Host "Script Completed"
Now open the windows powershell and point to the location for the ps1 file and open it, it will ask you to open the "LabUsers.csv".
Open it and give it a time to complete in a minute.

Check the OU and you will find the created users in place.

Now, you want to create the mailboxes for these users in Exchange 2010.
So it's a very simple command to be run at your exchange Management shell after elevation.

One step remaining before doing your command is to create a new database on the exchange server with a name as example "EgyEng.comDB"

THEN you are ready for the command as below:

Code:
[PS] C:\Documents and Settings\EgyEngadmin>Get-User -OrganizationalUnit ExchangeUsers | Where-Object {$_.RecipientType -eq "user"} | Enable-Mailbox -Dat
abase "EgyEng.comDB"
Great, now you create domain users and their exchange mailboxes in two minutes!.

Note: This applies to Windows 2003,2008 , Exchange 2007, 2010.

have a nice Day!
Egypt Engineers
EgyEng.com.

Comments

Popular posts from this blog

Question كيفية عمل share للـ outlook conntact لكل الـ Domain Users

  الحل بسيط جدا عايز الكونتاكت تتحدث دايما بحيث انك لما تضيف يوزر جديد يسمع في الكونتاكت اول حاجه بتدخل علي in office 2003 tools --- email account ---- add address book --- internet directory service (LDAP) type your server name then login info . mark this server require me to logon type any user on active directory and its password then save and close outlook and open it again now you will find all your active directory users in address book

3 things has to be done for better performance

  Tips from Goutham: 3 things has to be done for better performance: By default, XP displays extra graphic objects for menu items which can slow down your display. 1. To turn off these selectively... Right click My Computer Select Properties Click Advanced tab Under Performance, click Settings button To turn them all off, select Adjust for best performance Preference is to leave them all off except for Show shadows under mouse pointer and Show window contents while dragging 2. To speed up the display of the Start Menu Items, turn off the menu shadow. Right click open area of the Desktop Select Properties Click Appearance tab Click Effects button Uncheck Show shadows under menus 3. You can increase system performance by loading more of the system into memory. DO NOT attempt this with less then 512MBs of ram. Your system will become unstable. Click Start Click Run Enter regedit Click OK Go to HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Session Manager Memory Management Double cli

The difference between DNS and NDS

  Novell Directory Services(NDS) - Novell Directory Services (NDS) is a popular software product for managing access to computer resources and keeping track of the users of a  network , such as a company's  intranet , from a single point of administration. Using NDS, a network administrator can set up and control a  database  of users and manage them using a  directory  with an easy-to-use graphical user interface ( GUI ). Users of computers at remote locations can be added, updated, and managed centrally. Applications can be distributed electronically and maintained centrally. NDS can be installed to run under  Windows NT , Sun Microsystem's Solaris, and IBM's  OS/390  as well as under Novell's own  NetWare  so that it can be used to control a multi-platform network. NDS is generally considered an industry  benchmark  against which other products, such as Microsoft's Active Directory, must compete. Lucent Technologies plans to integrate NDS into its own QIP product