Bulk Create AD Users with Powershell from CSV
Introduction
If you’d like to automate creating users in your Active Directory, one of the best ways to do it is to use Powershell and a CSV. In this post I will show you how to bulk create AD users with Powershell from a CSV file.
For that we’ll need two things:
- a CSV file, pre-formatted with the required fields
- a Powershell script.
Both the files I’ll be using here, you can find them at the end of this post.
So, let’s…
Create AD Users with Powershell from a CSV
First off, open the CSV file. It looks like this:
FirstName;LastName;SAM;OU;Password;MailDomain;Description TestUser1;;TestUser1;CN=Users,DC=domain,DC=local;P@ssw0rd;domain.local; TestUser2;;TestUser2;CN=Users,DC=domain,DC=local;P@ssw0rd;domain.local; TestUser3;;TestUser3;CN=Users,DC=domain,DC=local;P@ssw0rd;domain.local;
Note that the fields are separated by a “;” because the AD DN (Distinguished Name) is separated by commas. Each line ends with a “;” for a simple reason: it is the “Description” field and I didn’t add any description for any of the users. Also note also that in all rows I have two “;” followed. That’s where you insert the user’s last name. Since mine have none, I’ll leave it blank.
Change the CSV to meet your needs and open up the script in the PowerShell ISE, like shown below:
Change the path to match the path where you have saved your CSV file and run it!
The output will be as follow:
Actually, even if the users are not created successfully, the script will always output that the users are created because it has no error control whatsoever. I did it just not to have a blank screen after the script has finished. If you get errors, you’ll have some pretty red lines showing up 🙂
So, we have our users in AD:
The files used are:
NewUsers.CSV and CreateUsersAD_CSV.ps1 (this one is a text file. Rename it to .ps1)
As always, if you found this article useful, share it with your friends.
If you have any questions or suggestions, leave your comment.
Thank you for reading!
Hello,
How can I add group to the MemberOf AD ? (I mean command in your script)
Hello !!!
how to enter into a group of users using your script.
Hi Lev,
using the Add-ADGroupMember cmdlet. In the ForEach loop, after creating the user, add this line after the New-ADUser line:
Add-ADGroupMember AD_Group $SAM
Note that AD_Group is the group where you want to add the users to.
I hope this helps.
Cheers
Hi,
I tested it, but it’s not working. Can you check where is a problem?
Import-Module activedirectory
$ADUsers = Import-csv C:\Users\IT\Desktop\bulk_users1.csv
foreach ($User in $ADUsers)
{
$Username = $User.username
$Password = $User.password
$Firstname = $User.firstname
$Lastname = $User.lastname
$OU = $User.ou
$email = $User.email
$jobtitle = $User.jobtitle
$department = $User.department
$description= $User.description
$Password = $User.Password
if (Get-ADUser -F {SamAccountName -eq $Username})
{
Write-Warning “A user account with username $Username already exist in Active Directory.”
}
else
{
New-ADUser `
Add-ADGroupMember Students 2018 $SAM
-SamAccountName $Username `
-UserPrincipalName “$Username@mydomain.com” `
-Name “$Firstname $Lastname” `
-GivenName $Firstname `
-Surname $Lastname `
-Enabled $True `
-DisplayName “$Firstname, $Lastname” `
-Path $OU `
-EmailAddress $email `
-Title $jobtitle `
-Department $department `
-Description $description `
-AccountPassword (convertto-securestring $Password -AsPlainText -Force) -ChangePasswordAtLogon $false
}
}
Thank You
Lev
Hi Lev,
you’ll have to adapt the code to your needs but below is the code I used, to first confirm that the user exists in the AD and if it doesn’t will create it and add it to the group. If the user already exists. the script will just add the user to the group and follow on to the next user.
Change your script also to match the order in which this script works, ie, first you have to create the user and then only after it you can add the user to a group. You have things the other way around.
If this doesn’t work for you show me your CSV file.
Cheers,
Pedro
Thank you, I used this script for add group
$ErrorActionPreference=’Continue’
$error.Clear()
$i=0
import-module activedirectory
$pathToCSV=’C:\Users\IT\Desktop\bulk_users1.csv’
$csv=Import-Csv -path $pathToCSV -Delimiter ‘,’
foreach ($group in $csv)
{
$uname=”$($group.Username)”
$groupname=”$($group.Groupname)”
Add-ADGroupMember -Identity $groupname -Members $uname
$i++
}
if ($error.Count -gt 0)
{
echo “Errors count: ” $error.Count
}
$success=$($i-$error.Count)
if ($success -gt -1)
{
echo “Success records count: ” $success
}
Great! Thank you for sharing!
do you have a script to update CN name ?
see below
# Import active directory Module
Import-Module activedirectory
$users = Import-Csv -Path “C:\VBT\AD Users Update\UpdateUsers.csv”
foreach ($user in $users){
if($u = Get-ADUser -Filter “SamAccountName -eq ‘$($user.samaccountname)'”){
$splat = @{
sAMAccountname = $user.sAMAccountname
DisplayName = $user.DisplayName
Givenname = $user.FirstName
Surname = $user.LastName
OfficePhone = $user.Phone
Company = $user.Company
Title = $user.JobTitle
Department = $user.Department
UserPrincipalName = $user.UserPrincipalName
MobilePhone = $user.Mobile
EmailAddress = $user.EmailAddress
Rename-ADObject -NewName “$user.DisplayName”
}
$u | Set-ADUser @splat
}else{
Write-Host “User not found $($user.sAMAccountname)”
}
}
Hi Nigel,
sorry for the late reply. Looks like I didn’t get any notification for your comment… strange.
Anyway, no, I don’t have. I hope you managed to get around it!
Cheers