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

Calculate how much data can be transferred in 24 hours based on link speed in data center

  In case you are planning for migration via DIA or IPVPN link and as example you have 200Mb stable speed so you could calculate using the below formula. (( 200Mb /8)x60x60x24) /1024/1024 = 2TB /per day In case you have different speed you could replace the 200Mb by any rate to calculate as example below. (( 5 00Mb /8)x60x60x24) /1024/1024 =  5.15TB  /per day So approximate each 100Mb would allow around 1TB per day.

Recreating a VMFS-3 or VMFS-5 partition table in ESXi 5.x

For this kind of issues you need to engage VMware support on this, following any part of this article could lead to more complex situation if not ran by an expert.   Symptoms Datastore does not mount because of a lost or overwritten partition table.   Purpose When a VMFS partition is created in ESX 3.x or ESX 4.x, it has a Master Boot Record (MBR) partition map. The MBR is written to the first 512 B block (LBA0) and contains the information where the (VMFS) partition starts and ends. ESXi 5.0 introduced VMFS-5, which uses a GUID partition table (GPT) for new datastores. When a VMFS-3 partition is created in ESXi 5.x and is later updated to VMFS-5, the original partition map (MBR) is maintained. If the partition information of a VMFS datastore is deleted or overwritten (for example, by a Windows system with direct access to the same disks), it is impossible to determine if the partition map was GPT or MBR. The only time you can be sure that a GPT partition map was used is if th...

How to deploy an OVA in Cloud Director

  How to deploy an OVA in Cloud Director Yesterday I was in a call with a customer and we discussed uploading OVA’s into Cloud Director. I said sure that is no problem at all. Well then I started thinking how are you supposed to deploy an OVA in Cloud Director because I do not even remember how this is done. So I opened up Cloud Director and tried it for myself. I decided to make this blog post along the way to show you how to deploy an OVA in Cloud Director. As an added bonus I will also show you how to upload an OVA to the catalog. This way I can deploy the OVA over and over again. Environment information Cloud director 10.3 OVA How to deploy an OVA in Cloud Director In Cloud director I opened up the Applications section and selected “NEW” I am deploying an OVA so I selected “Add vApp From OVF”. In the screenshot below you can see all the steps involved with (in my case) deploying and customising the Usagemeter. Options to customise are for instance: Network settings, vApp naming...