#Prepare CSV File for inport, for passwords you can use generator: # https://manytools.org/network/password-generator/ # This is example CSV, just save it with notepad with .csv extension ( select all files instead of txt) # Use Quotes "" for OU column as there are commas, it would break the table if OU is not in quotes. <# FirstName,Initials,Lastname,Username,Email,StreetAddress,City,ZipCode,State,Country,Department,Password,Telephone,JobTitle,Company,OU Max,MF,Fraser,Max.Fraser,Max.Fraser@domain.local,21 Baker St,London,NW1 6XE,,GB,IT,khN5GrSce5,,Engineer,DOMAIN,"OU=Site1,OU=Users,OU=Company,DC=DOMAIN,DC=local" Grace,GR,Rees,Grace.Rees,Grace.Rees@domain.local,21 Baker St,London,NW1 6XE,,GB,IT,FbFcSyVP8X,,Engineer,DOMAIN,"OU=Site2,OU=Users,OU=Company,DC=DOMAIN,DC=local" #> # Import active directory module for running AD cmdlets Import-Module ActiveDirectory # Store the data from UsersExample.csv in the $ADUsers variable $ADUsers = Import-Csv "C:\Users\username\Desktop\UsersExample.csv" -Delimiter "," # Define UPN $UPN = "domain.local" # Loop through each row containing user details in the CSV file foreach ($User in $ADUsers) { #Read user data from each field in each row and assign the data to a variable as below $username = $User.username $password = $User.password $firstname = $User.firstname $lastname = $User.lastname $initials = $User.initials $OU = $User.ou #This field refers to the OU the user account is to be created in $email = $User.email $streetaddress = $User.streetaddress $city = $User.city $zipcode = $User.zipcode $state = $User.state $country = $User.country $telephone = $User.telephone $jobtitle = $User.jobtitle $company = $User.company $department = $User.department # Check to see if the user already exists in AD if (Get-ADUser -Filter "SamAccountName -eq '$username'") { # If user does exist, give a warning Write-Warning "A user account with username $username already exists in Active Directory." } else { # User does not exist then proceed to create the new user account # Account will be created in the OU provided by the $OU variable read from the CSV file New-ADUser ` -SamAccountName $username ` -UserPrincipalName "$username@$UPN" ` -Name "$firstname $lastname" ` -GivenName $firstname ` -Surname $lastname ` -Initials $initials ` -Enabled $True ` -DisplayName "$firstname $lastname" ` -Path $OU ` -City $city ` -PostalCode $zipcode ` -Country $country ` -Company $company ` -State $state ` -StreetAddress $streetaddress ` -OfficePhone $telephone ` -EmailAddress $email ` -Title $jobtitle ` -Department $department ` -AccountPassword (ConvertTo-secureString $password -AsPlainText -Force) -ChangePasswordAtLogon $True # If user is created, show message. Write-Host "The user account $username is created." -ForegroundColor Cyan } }