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.

Integration with vCloud Director failing after NSXT upgrade to 4.1.2.0 certificate expired

  Issue Clarification: after upgrade from 3.1.3 to 4.1.2.0 observed certificate to be expired related to various internal services.   Issue Verification: after Upgrade from 3.1.3 to 4.1.2.0 observed certificate to be expired related to various internal services.   Root Cause Identification: >>we confirmed the issue to be related to the below KB NSX alarms indicating certificates have expired or are expiring (94898)   Root Cause Justification:   There are two main factors that can contribute to this behaviour: NSX Managers have many certificates for internal services. In version NSX 3.2.1, Cluster Boot Manager (CBM) service certificates were incorrectly given a validity period of 825 days instead of 100 years. This was corrected to 100 years in NSX 3.2.3. However any environment originally installed on NSX 3.2.1 will have the internal CBM Corfu certs expire after 825 regardless of upgrade to the fixed version or not. On NSX-T 3.2.x interna...

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...