Creating new AD user accounts from a csv-file data has become even easier. In versions prior to 1.0.6 you could import a csv file, and then use ForEach-Object and manual column mapping to assign the values to the attributes (for example, see this post on populating test environments):
Import-CSV c:\users.csv | ForEach-Object { New-QADUser -Name $_.Name -SamAccountName $_.Name -Department $_.Department -ParentContainer mydoman.local/demo }
This works but is somewhat redundant. If the CSV file already has a column named Name
, why wouldn’t PowerShell assign that column to the Name
property automatically?
This is exactly what we have added in AD cmdlets 1.0.6. Now you no longer have to use ForEach-Object
(pipe import- directly into new-!) and don’t need to specify the parameters which are already in the CSV file!
This means that if I have a csv file like this:
Name,samAccountName,Title
"Aaron Nelson",anelson,Engineer
"Justin Starin",jstarin,Janitor
I can create these two new user accounts with the simple command below:
Import-Csv users.csv | New-QADUser -ParentContainer mydomain.local/test –Import
Notice how much simpler it has become compared to the one used in the beginning of the post!
But wait, it becomes even better! You can mix and match the approaches by using some of the parameters from the CSV and adding others in the command-line. Let’s use the same CSV but set the City property to the accounts we create:
Import-Csv users.csv | New-QADUser -ParentContainer mydomain.local/test -City Melbourne –Import
This takes the Name, SamAccountName, and Title from CSV, and adds the City from our command:
Get-QADUser -SearchRoot mydomain.local/test | Format-Table Name,samAccountName,Title,City
Name samaccountname Title City ---- -------------- ----- ---- Aaron Nelson anelson Engineer Melbourne Justin Starin jstarin Janitor Melbourne
The whole purpose of PowerShell and AD cmdlets is to make AD management easier and more intuitive, and it is good to see another step in that direction.
By the way, this feature was influenced by the requests we were getting from the community: for example, from Jonathan Walz and his comments here. Thanks Jonathan and everyone on the AD PowerShell discussion forum!
Tags: AD, AD cmdlets, Active Directory, PowerShell, cmdlets, one-liner, oneliner, provisioning