Create Bulk Users in Active Directory (Step-By-Step Guide)

This is the complete tutorial for creating bulk users in Active Directory.

Yes, I know

Creating Active Directory accounts is boring, it can be repetitive and time consuming when done manually. And who has the time to manually create bulk AD accounts?

Well, I’ve got good news!

Importing bulk ad users is simple and can actually be fun. (Yea I’m a nerd, automation is a great thing).

In this guide, I’ll show you step by step instructions on how easy it is to create bulk ad accounts.

I’m actually going to show you two methods to bulk import AD accounts.

Method 1: Using PowerShell to import ad users from a CSV
Method 2: Using GUI Tool to bulk import AD users

Check it out

Video Tutorial

If you don’t like video tutorials or want more details, then continue reading the instructions below.

Method 1: Using PowerShell to import ad users from a csv

If you don’t like PowerShell or want a GUI import tool then jump to method 2.

What you will need: 

  • PowerShell Active Directory Module loaded – The script I provide will load the module you just need to run it from a computer that has RSAT tools installed or the AD role.
  • Rights to create users accounts in Active Directory
  • CSV file and PowerShell Script -> Download Here
  •  

Step 1: Setup the CSV file

There are only 5 fields in the CSV file that are required for each user account, they are:

firstname
lastname
username
password
ou

I will walk through adding a few users to my csv file

Above is a screenshot of my csv file setup with the required fields configured. It’s not a good security practice to set the same password for every account, mix it up some.

I’ve set the PowerShell script to set the accounts to require password change at next logon, another good security practice. This can be changed if you want to remove that option.

You can set each account to import into a specific OU.  I’ve set two accounts to import into the default users OU then I set one account to import into a Marketing OU.

How do you find the OU path? 

The OU path is the distinguishedName attribute, to find this open up Active Directory Users and Computers and browse to the OU you want to import to, then right click and select properties then select attribute editor.

Copy the path into the OU column on the csv file.

At this point the csv file has the required fields,  you can jump to step 2 (setting up the PowerShell script) or keep reading to setup optional fields for user accounts.

Setup User Optional fields

You may want to include some additional details for each account.

I’ve included some optional fields that are commonly used when setting up AD accounts. If there are fields you want to add that I have not provided, just add them to the CSV file (you will also need to add it to the script)

email
streetaddress
city
zipcode
state
county
department
telephone
job title
company

As you can see in the screenshot above I’ve entered info into the optional fields for 2 accounts.

Now save the CSV file to an easy to remember location. I’ve put mine in c:\it\Final_NewAccounts2.csv

The path of the CSV file will need to be entered into the powershell script. With the CSV file setup I’ll move to step 2.

Step 2: Setup the PowerShell script

The only thing that needs to be modified in the script is the path to the CSV file, and the UserPrincableName.

To modify the script just right click on the ps1 file and select edit. This will open the script in PowerShell ISE

Modify this section to the correct path of your CSV file.

$ADUsers = Import-csv C:\it\Final_NewAccounts2.csv

Now modify line 42 and change the domain

-UserPrincipalName "$Username@winadpro.com"

My domain is ad.activedirectorypro.com so I will update mine to

-UserPrincipalName "$Username@ad.activedirectorypro.com"

Save the changes and move on to step 3.

Step 3: Run the PowerShell Script to import the accounts

At this point, the CSV file should be setup with the users information and the Powershell script should be modified.

Now it’s time to execute the script.

In PowerShell ISE just click the green button to run the script.

It should return to the prompt if it ran successfully, I received a warning due to an account that already exists.

I will verify it created the other account.

Yes, it was a success.

That’s it for method 1. You can now use this script anytime to automate creating one or many AD user accounts. It’s a huge time saver.

Method 2: Using GUI Tool to bulk import AD users

This method requires no PowerShell. It’s super easy and has built-in support for many user attributes, adding to multiple groups, multiple proxyaddresses, and so on.

Step 1: Download and Install the AD Pro Toolkit

Click here to download a free trial

Step 2: Open AD Pro Toolkit and click on User Bulk Import

Step 3: CSV File Configuration

Click the Bulk Import button to generate a CSV template.

You will be prompted to save the CSV file. You can rename it if you want.

Now open the CSV template and fill out the fields you need.

Key points

  1. The only required field is the sAMAccountName, the rest are optional. This is a Microsoft required field.
  2. The template includes 33 user attributes. You can add additional attributes by adding a new column with the attribute name.
  3. Use the OU column to add users to an organizational unit. This needs to be the DN of the OU. I provided steps above for finding this value.
  4. You can add users to multiple groups by separating them with a comma. Example below in my CSV screenshot.
  5. You can give users multiple proxyaddresses just separate them with a comma.

In this example, I’m going to create several users, import them into the Marketing OU, and add them to multiple security groups. Here is a screenshot of my CSV file.

When you have your CSV template ready just save it and move to step 3.

Step 3. Select CSV and click run

The next step is to select the template from the GUI tool and click run.

You will see the progress in the lower left.

When the import is complete click the logs button to check for any errors.

The log screen is a great feature so you can double check the import had no errors. You can use the search button to filter for any error events.

Next, I’ll open an account and verified all properties were set.

Yes! It worked, it created the account and imported all the fields I set.

I’ll check the Marketing folder to verify the accounts imported into the correct OU.

The GUI tool makes the bulk importing process very easy, no coding or PowerShell experience is needed. The AD Pro Toolkit also includes a tool for bulk updating user accounts. This is a huge time saver for when you need to mass update user information such as department, telephone number, email addresses, and so on.

I have shown you two methods for creating bulk users in Active Directory, try them out and decide which one works best for you.

Get Your Free Trial of AD Pro Toolkit

Top 25
Active Directory
Security Checklist

Download this FREE PDF checklist that includes the top 25 best practices for securing Active Directory and Windows systems.

102 thoughts on “Create Bulk Users in Active Directory (Step-By-Step Guide)”

    • Hi Nick,

      The description and office fields are not something I commonly used when creating bulk users. The script can easily be modified to include any fields you want, just add the field to the excel file and include it in the script.

      Reply
    • Sharbel, Having user accounts with no passwords is a big security risk. I would not recommend it.

      With that said I think you can use this command New-ADUser “John Doe”. This will create the account but will disable it until a password is provided.

      Reply
  1. I am looking at doing this but only creating mail enabled contacts in bulk. I was currently doing this by loading the contacts from an remote LDAP and then looping through them. I was getting server errors like, server not responding, while looping. Is this method any different? I could create this file from the remote LDAP and then run your method but it looks similar to my current loop. And by bulk I mean over 10k mail enabled contacts.

    Reply
  2. Can I do this before I join the user computers to the domain?

    Also, if I have multiple unmanaged users in the company and now I want to create an AD DC to manage them, what is the best way to do it and what the order of operation should be?

    Thanks.

    Reply
  3. Robert,

    Could this also be used to set the newly created imported users with default “Member of” groups? This way they could be set to distros, security groups, etc without having to go back manually and set each one up after the import.

    Reply
  4. Hi Robert! Thank you so much for this approach. I took your example and I’ve modified the logic for the following reasons.
    Suppose you’re managing a multi-domain AD environment (same forest) and HR department send you the list of new hires for the entire company each month. If you don’t have a software managed solution (which is my case) you have to manage the process by your own.

    So, in the CSV file I’ve added the following columns:
    – UPNSuffix
    – UPN (which is a formula — =TEXTJOIN(,TRUE,A2,”@”,H2) where A2 contains Name/SamAccountName property and H2 contains UPNSuffix string) As a result you have SamAccountName@UPNSuffix.
    – MobilePhone (value required for sales users)
    – OU (this is for creating accounts into different OUs)

    The main change in the script logic is based on “what if HR send you a list in which a given SamAccountName is already created for a user account, but the lastname of the user has changed (let’s say… a woman got married)?. According to the validation you’re doing, the script will throw a warning and it’ll skip the creation when in fact the account must be modified.

    Let’s take into account the fact that modifications are required as creations as well. So… instead of using New-ADUser what must be used is Set-ADUser. I’ve spent many hours trying to figure out WHY Set-ADUser throw errors when all the information in the CSV is accurate. What I’ve realized is… Set-ADUser will throw errors “IF THERE’S AN EMPTY EXEL CELL AND YOU’RE TRYING TO MAP THE VALUE OF SUCH CELL AS A PROPERTY IN ACTIVE DIRECTORY USER ACCOUNT OBJECT”.
    I have user accounts whose INITIAL property doesn’t matter so they’re empty cells in my CSV, but the foreach() script block is taking it into account so I had errors (nothing that could be easily realize in the error message by the way).

    So… in order to get this covered, I had to add $ErrorActionPreference = “SilentlyContinue” at the beginning of the script.

    Lastly, Set-ADUser won’t modify Fullname property. Again… if for some reason HR give you a list with this value changed, the way I’ve covered this is by adding Get-ADUser -Identity ($User.SamAccountName) | Rename-ADObject -NewName $User.DisplayName -Verbose within foreach() script block.

    I hope this helps someone who faced the same issues I’ve faced, or needs to achieve the same goals as I have.

    Thanks a lot Robert. Your script gave me the starting point of my whole search!

    Reply
    • Fernando thanks for the details, I’m sure this will help others.

      The script I provided is very basic so I’m happy you was able to use it as a starting point.

      Reply
    • Hello

      What about if there are duplicate user names? Is there something I can add to your script that would just add a 1 or 2 or 3 until the account is created

      Reply
  5. Hi Everyone,

    I have a problem with the script. I got the following message:
    Get-ADUser : Variable: ‘Username’ found in expression: $Username is not defined.
    At C:\scripts\bulk_users1.ps1:31 char:6
    + if (Get-ADUser -F {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    I only changed the lines that are required in this tutorial.

    If somebody can help me that would be very much appreciated 🙂

    Reply
  6. Hi Everyone,

    First I want to thank you for sharing this awesome tutorial!
    For some reason, I get an error message with the following text:

    Get-ADUser : Variable: ‘Username’ found in expression: $Username is not defined.
    At C:\scripts\bulk_users1.ps1:31 char:6
    + if (Get-ADUser -F {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    I only changed the lines to my OU’s and my domain

    If somebody would like to help me I would appreciate it 🙂

    -Sven

    Reply
  7. Hi Rob,

    This script works like a charm! One question: Is there a way to add a person to an AD Group when you import them?

    Thanks a bunch!

    Reply
  8. Honestly, took me whole day to figure out why PS method didn’t work and user import tool works so better. Found out that it was due to wrong OU information, no doubt in that your tutorial is so step by step helpful guide for experts or newbies.

    Reply
  9. can you add an option to add to groups? i am copying from a template so if i use your script, i will need to add the users to groups manually.

    Reply
    • Hi Ricky / anyone else wondering how to do this,

      For additional attributes that don’t have a specific PowerShell property, you can use:
      New-ADUser -OtherAttributes @{‘proxyAddresses’=$proxyAddresses}
      In this case, for a proxy address. You can include as many as you like in the curly brackets, I included {‘co’=$co} for the full country name as New-ADUser doesn’t have a property for directly setting it (only the country code, e.g. US).

      Hope that helps.

      Reply
  10. Thank you. Thank you. Thank you.

    Every year I need to create 180+ “new Student” Accounts in AD. With a little modification of the amazing ground work you have shared with the world, you have saved me days of manually entering in each account. I used the Powershell and .csv approach, and it works flawlessly! Previously I have used some “trial software” that had obvious limitations, and expectations, but knew there had to be a way Powershell could do it. And here you are! Thank you so very much for sharing this.

    Reply
  11. Having trouble adding a user to a domain group when using the script. I’m a novice with Powershell. I have the AD group in my csv file. Any help would be great.

    # Import active directory module for running AD cmdlets
    Import-Module activedirectory

    #Store the data from ADUsers.csv in the $ADUsers variable
    $ADUsers = Import-csv C:\AD_Tool\Master.csv

    #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
    $SamAccountName =$User.SamAccountName
    $OU = $User.ou #This field refers to the OU the user account is to be created in
    $email = $User.email
    $company = $User.company
    $department = $User.department
    $Password = $User.Password
    $homedirectory = $User.homedirectory
    $homeDrive = $User.homeDrive
    $EmployeeID = $User.EmployeeID
    $EmployeeNumber = $User.EmployeeNumber
    $Add-ADGroupMember -Identity = $User.Add-ADGroupMember -Identity

    #Check to see if the user already exists in AD
    if (Get-ADUser -F {SamAccountName -eq $Username})
    {
    #If user does exist, give a warning
    Write-Warning “A user account with username $Username already exist 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@mydomain.org” `
    -Name “$Firstname $Lastname” `
    -GivenName $Firstname `
    -Surname $Lastname `
    -Enabled $True `
    -DisplayName “$Lastname, $Firstname” `
    -Path $OU `
    -EmailAddress $email `
    -homeDrive $homeDrive `
    -homedirectory $homedirectory `
    -EmployeeID $EmployeeID `
    -EmployeeNumber $EmployeeNumber `
    -Add-Add-ADGroupMember -Identity $Add-ADGroupMember -Identity `
    -AccountPassword (convertto-securestring $Password -AsPlainText -Force) -ChangePasswordAtLogon $False

    Reply
  12. Hello Robert,

    This is very helpful. I usually create multiple users in AD every 2 weeks and your script saves me a lot of time. Do you know how I can insert the details for Pager, Mobile in Telephones tab and also assign them to specific Security Group?

    Thanks a lo!

    Reply
  13. Hi Robert,

    Thank you for this helpful post.

    I would like to upload a users with option Password Never Expires in Account tab. How do I set this option in .csv file?
    Thank you
    Regards,
    Thao

    Reply
  14. So, the same as the last commenter, every year we have the need to create hundreds of new student accounts. Additionally, we have summer school classes that are open to non-district kids. So, that is a bunch more accounts that are created every year! We were contracting this bulk creation out to our network support people. But you tool works like a dream and will save us time AND money! One question though: the Sam-Account-Name isn’t populating the user logon name in AD…shouldn’t it? Or do I have to map that somewhere else? Additionally, when I look at the OU in AD, I would like to see the students’ names in the Name column rather than the Sam-Account-Name. What do I need to change to make these things happen? Thanks!!

    Reply
  15. I was so pleased to find this post, Robert. I too have to create new students every year/semester. I had been using a python script given to me using LDAP. But I wanted more granularity. This is great. But I shy away from the powershell (newbie) and tried the solarwinds user import tool. It started out great, but kept hitting errors (it was the OU mapping). When I finally got it to create the accounts, it did not populate all the attributes from the CSV, only the pre-win2000 attribute. What am I missing?

    Reply
  16. The Solar Winds tool works well, but I have added an extra column. All students are members of Sudents_SG to I have added groupMembershipSAM to the csv file which I map across to Group-Membership-SAM in the User Import Tool but it does not get imported. Any idea why this is the case?

    Reply
  17. Love this, big time saver, however I am having issues trying to figure out how to add the new bulk users to their proper groups. Can you help with this?

    Much appreciate it.

    Reply
  18. Thank you so much. This has been a life saver. I saw in one of the comments you were working on a solution for adding to Groups. Has this been completed? It would help out a lot in my environment.

    Reply
  19. The GUI tool is amazing, but I get and error saying: could not create user [Access is denied.] I am both Domain Admin and Enterprise Admin. can you help?

    Reply
    • Please log into your account and download the latest version. If you still have issues please send me an email.

      Thanks
      Roberts

      Reply
  20. Hi Robert,

    I would like to use this PS Script to bulk import users in a new environment.

    .csv is like
    firstname lastname username email city country state zipcode password telephone jobtitle company ou Department

    Jack Lamers j.lamers j.lamers@company.com Venray Nederland Limburg 5803 AN P@$$w0rd 0612345678 Sysop
    NEH CN=etcetcetc ICT

    When I run your script, I receive these errors

    PS C:\Users\Administrator> C:\Beheer\powershell_create_bulk_users\bulk_users1.ps1
    Get-ADUser : Variable: ‘Username’ found in expression: $Username is not defined.
    At C:\Beheer\powershell_create_bulk_users\bulk_users1.ps1:31 char:6
    + if (Get-ADUser -Filter {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    Get-ADUser : Variable: ‘Username’ found in expression: $Username is not defined.
    At C:\Beheer\powershell_create_bulk_users\bulk_users1.ps1:31 char:6
    + if (Get-ADUser -Filter {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    Get-ADUser : Variable: ‘Username’ found in expression: $Username is not defined.
    At C:\Beheer\powershell_create_bulk_users\bulk_users1.ps1:31 char:6
    + if (Get-ADUser -Filter {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    Any Idea?

    Reply
  21. Thanks very much, for providing a few options for bulk creating users on AD. Very, very useful info.
    Nicely done, to the point and detailed! Impressive work you have done. Many thanks!!

    Reply
  22. How do I map User Logon name to its appropriate domain? Say for example I have a child domain on DC2 with a domain like studentid@student.myuni.com. When I bulk import using SolarWinds GUI tool everything works except this mapping is not taking place, any ideas?

    Reply
    • With the GUI tools, you can right click and run as a different user and authenticate to the child domain. With PowerShell, you can use the -server parameter to specify the domain controller instance to connect to.

      Reply
  23. Hi Robert,
    What code can I add to add the new user email address in the proxyAddress field of the attribute editor.
    Thanks for the help

    Reply
  24. Great tool, was hoping it would work for me but I can’t past an [Access is Denied.] error when I attempt the import. Know the credentials I’m using are good; I can manually create a user just fine. Pared the attributes down to just three fields (Sam-Account-Name, Passwod, OrganizationalUnit) and one record, fails every time. Tried several different OU’s, same error.

    Any ideas?

    Reply
    • Hi Sam. Is this with the script or GUI tool? If you purchased the GUI tool send me an email. I need to make sure you are on the latest version, there have been several updates.

      Reply
  25. One little tip: CSV delimiters may differ in some regions / localized Excel versions, so if you use for example semicolons (like me) instead of commas, extend your CSV import line:
    $ADUsers = Import-csv -Path “A:\Some\Path\tofile.csv” -Delimiter “;”

    Anyway, it’s an easy, very useful and very clear script, thanks for sharing! 🙂

    Reply
  26. i have a problem when i click run code i get that error

    new-ADUser : The server is unwilling to process the request
    At C:\it\bulk_users1.ps1:41 char:3
    + New-ADUser `
    + ~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (CN=Joshua Lynch…ctorypro,DC=COM:String) [New-ADUse
    r], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Comman
    ds.NewADUser

    New-ADUser : The server is unwilling to process the request
    At C:\it\bulk_users1.ps1:41 char:3
    + New-ADUser `
    + ~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (CN=Sam smith,CN…ctorypro,DC=COM:String) [New-ADUse
    r], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Comman
    ds.NewADUser

    PS C:\it>

    Reply
  27. It does not create an email box in exchange or office 365. It just adds the email address to the Active Directory attribute field.

    Reply
  28. when i run you script i get this error can you assist.
    -Description : The term ‘-Description’ is not recognized as the name of a cmdlet, function, script file, or operable
    program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:52 char:13
    + -Description $description
    + ~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (-Description:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    ConvertTo-SecureString : Cannot bind argument to parameter ‘String’ because it is null.
    At line:54 char:54
    + … -AccountPassword (convertto-securestring $Password8 -AsPlai …
    + ~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [ConvertTo-SecureString], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSecureS
    tringCommand

    New-ADUser : The password does not meet the length, complexity, or history requirement of the domain.
    At line:35 char:3
    + New-ADUser `
    + ~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (CN=Sam smith,CN…=hra,DC=nycnet :String) [New-ADUser], ADPasswordComplexityExc
    eption
    + FullyQualifiedErrorId : ActiveDirectoryServer:1325,Microsoft.ActiveDirectory.Management.Commands.NewADUser

    -Description : The term ‘-Description’ is not recognized as the name of a cmdlet, function, script file, or operable
    program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:52 char:13
    + -Description $description
    + ~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (-Description:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    ConvertTo-SecureString : Cannot bind argument to parameter ‘String’ because it is null.
    At line:54 char:54
    + … -AccountPassword (convertto-securestring $Password8 -AsPlai …
    + ~~~~~~~~~~
    + CategoryInfo : InvalidData: (:) [ConvertTo-SecureString], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSecureS
    tringCommand

    Reply
  29. Get-ADUser : Zmienna: „Username” znaleziona w wyrażeniu $Username nie jest zdefiniowana.
    At line:31 char:6
    + if (Get-ADUser -Filter {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    PS C:\Users\Administrator>

    Reply
  30. Hello,

    On a AWS AD Server, and receiving this error :
    -AccountPassword : The term ‘-AccountPassword’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or
    if a path was included, verify that the path is correct and try again.

    Thanks

    Reply
  31. I know this isn’t the best way to do this but this is what they want us to do.

    We have about 1200 accounts we need to create from a company we are merging with.

    These folks will not be logging into our domain, and they want them to have their company email address.

    Firstname Lastname Email Address EmployeeID
    John Smith Jsmith@othercompany.com 12345

    I wanted to just create contacts for these user, but they are insisting that we include the employee ID.

    Will your script allow me to do this?

    If it will All of these users will go into the same OU. Can I change this line:
    -Path $OU `
    to read
    -Path “OU=Users,OU=Parent OU,OU=Grandparent OU,DC=WGI,DC=local

    Thanks for your help on this, and this script. It has been very helpful in the past.

    Reply
  32. Good script.

    Modified some little stuff :

    Adding -Encoding UTF8 to the Import-CSV.

    No funky char for non-english

    Adding $SAMAccountName = try { $Username.substring(0, 20) } catch [ArgumentOutOfRangeException] { $Username }

    Add Flexibility for long username but prevent errors by trunking it for the SAMAccountName.

    Reply
  33. Bulk tool throws error, no matter what csv is used:

    2021-04-29 14:18:05.9174|FATAL|Bulk_User_Creator.Form1|You can ignore bad data by setting BadDataFound to null.
    2021-04-29 14:18:05.9174|FATAL|Bulk_User_Creator.Form1|You can ignore bad data by setting BadDataFound to null.
    2021-04-29 14:18:05.9327|FATAL|Bulk_User_Creator.Form1| at CsvHelper.CsvParser.Read()
    at CsvHelper.CsvReader.Read()
    at CsvHelper.CsvReader.d__63`1.MoveNext()
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
    at Bulk_User_Creator.Form1.BeginUserCreation()

    Reply
  34. THank for Sharing
    But if i want add group in the csv file . so How can i do
    can you sharing with powershell ???

    Reply
  35. Previusly it was working perfectly, But now last 2 week i’m getting this error could you please look into this.

    WARNING: Error initializing default drive: ‘Unable to find a default server with Active Directory Web Services running.’.
    Get-ADUser : Unable to find a default server with Active Directory Web Services running.
    At line:23 char:6
    + if (Get-ADUser -F {SamAccountName -eq $Username})
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : ResourceUnavailable: (:) [Get-ADUser], ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1355,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    Reply
  36. I got this error, anyone help pls
    New-ADUser : The server is unwilling to process the request
    At line:43 char:9
    + New-ADUser `
    + ~~~~~~~~~~~~

    Reply

Leave a Comment