Create Thousands of Active Directory Users
Import the first and surnames from a CSV file. Then create random user accounts with complex passwords and Home\Profile mappings.
Also available @ https://github.com/Tenaka/Create-1000s-ADUsers
Create csv and populate with first and surnames and save as "C:\Downloads\names.csv"
FirstName,Surname
Blaze,Gac
Bramwell,Gaccione
Brant,Gacek
Brawley,Gach
Breri,Gacke
Briar,Gackle
Brighton,Gad
Broderick,Gadberry
Bronson,Gadbois
Update all the AD related paths and OU's.
Run from a client or server with the AD PowerShell modules installed
#get OU for users
import-module activedirectory
#Get Targetted OU
$orgOU = Get-ADOrganizationalUnit "ou=Test Users,ou=Org,dc=sh,dc=loc"
$orgOU.distinguishedname
#set password length
$length = "14"
#Outs the account and password created
$results = "c:\Downloads\results.txt"
#current number of users in OU
$aduE = get-aduser -filter {samaccountname -like "*"} -SearchBase $orgOU
$existing = $aduE.count
#Import list of first and surnames
$Names = "C:\Downloads\names.csv"
#imports and works out max possible users that can be created
$impName = Import-Csv -path $Names
$FNCT = ($impName.firstname | where {$_.trim() -ne ""}).count
$SNCT = ($impName.surname | Where {$_.trim() -ne ""}).count
$maxUN = $FNCT * $SNCT
$total = ($maxUn.ToString()) -10
do {$enter = ([int]$NOS = (read-host "Max User accounts is "$total", how many do you need"))
}
until ($nos -le $total)
$UserLists=@{}
#Randomises first and surnames
do {
$FName = ($impName.firstname | where {$_.trim() -ne ""})|sort {get-random} | select -First 1
$SName = ($impName.surname | Where {$_.trim() -ne ""}) |sort {get-random} | select -First 1
$UserIDs = $Fname + "." + $Sname
try {$UserLists.add($UserIds,$UserIDs)} catch {}
$UserIDs = $null
Write-Host $UserLists.count
} until ($UserLists.count -eq $nos)
$UserLists.count
$userlists.GetEnumerator()
$UserLists.key
$ADUs = $UserLists.values
foreach ($ADu in $ADus)
{
#set var for random passwords
$Assembly = Add-Type -AssemblyName System.Web
$RandomComplexPassword = [System.Web.Security.Membership]::GeneratePassword($Length,4)
foreach ($pwd in $RandomComplexPassword)
{
#Splits username to be used to create first and surname
$ADComp = get-aduser -filter {samaccountname -eq $ADU}
$spUse = $ADu.Split('.')
$firstNe = $spUse[0]
$surNe = $spUse[1]
$pwSec = ConvertTo-SecureString "$pwd" -AsPlainText -Force
#Creates user accounts
if ($ADComp -eq $null)
{
new-aduser -Name "$ADU" `
-SamAccountName "$ADU" `
-AccountPassword $pwSec `
-GivenName "$firstNe" `
-Surname "$surNe" `
-Displayname "$FnS" `
-Description "TEST $ADu" `
-Path $orgOU `
-Enable $true `
-ProfilePath "\\shdc1\Profiles$\$ADU" `
-HomeDirectory "\\shdc1\Home$\$ADU" `
-HomeDrive "H:" `
#Add Group membership
Add-ADGroupMember -Identity "DFSAccess"-Members $ADU
#Outs results to Results file
$adu | out-file $results -Append
$pwd | out-file $results -Append
" " | out-file $results -Append
}
else {"nope exists "}
write-host $ADU
}
}
# Total users in OU
$aduC = get-aduser -filter {samaccountname -like "*"} -SearchBase $orgOU
$TotalU = $aduC.count
#Total users created
write-host "Total New Users"
$TotalU - $existing