The other day I was setting up a few VmWare test environments for work, where I had to test amongst other apps Quest Recovery Manager for AD..
So I had to create some users in Active Directory, I thought I would create a PowerShell script to do that (Must keep your PS skill fresh :)
So I wrote a little code snippet to create a few OU’s.
[sourcecode lang=“ps”]
#Gets the default naming context
$RootDN = (Get-QADRootDSE).DefaultNamingContextDN
#Name of OU going to be created in the root of “AD”
$RootOUName = “Apritest”
#Create “root” OU
new-qadObject -ParentContainer $RootDN -type ‘organizationalUnit’ -NamingProperty ‘ou’ -name $RootOUName
#Create sub OU’s, create as many as you like, you only need to change the -name property in the end of the line
new-qadObject -ParentContainer “OU=$RootOUName,$RootDN” -type ‘organizationalUnit’ -NamingProperty ‘ou’ -name ‘Administrators’
new-qadObject -ParentContainer “OU=$RootOUName,$RootDN” -type ‘organizationalUnit’ -NamingProperty ‘ou’ -name ‘Marketing’
new-qadObject -ParentContainer “OU=$RootOUName,$RootDN” -type ‘organizationalUnit’ -NamingProperty ‘ou’ -name ‘Sales’
[/sourcecode]
I wanted it to look more like a production environment, by having multiple OU’s.
A fews ago I stumbled upon a script by Brandon Shell to create users, and I thought I could use that… So I modified his code. With my new modified code it is possible to select a “base” OU, then it will go through all sub OU’s, and create x amount of users in each. The users will be named after the OU they are created in.. So an example would be TestSales1, TestSales2, TestMarketing1 etc etc.
[sourcecode lang=“ps”]
#Enter the DN path of the OU you want to add users to
#Note I manually put in the DN of an OU in my test environment, you will have to put one in that exists in your environment
$OuPath = ‘OU=Aprismo Users,DC=aprismo,DC=test’
#Number of users to create in each OU
$No = 5
Function AddUsers
{
param([string]$OUDN, [string]$OUName)
foreach($user in 1..$No)
{
$UserName = “Test$OUName$User”
$UserPassword = “P@ssw0rd123!”
$ExpiresOn = $((Get-Date).AddMonths(1))
$userDescription = “User added for Performance Testing on $(Get-date) and Expires on $ExpiresOn”
$user = New-QADUser -name $UserName -SamAccountName $UserName
-Description $UserDescription -ParentContainer $OUDN
-UserPassword $UserPassword
$user | Set-QADUser -AccountExpires ((Get-Date).AddMonths(1))
}
}
#This foreach loops through all OU’s “below” $OUPath
Foreach ($OU in Get-QADObject -SearchRoot $OUPath -Type ‘organizationalUnit’){
Addusers $OU.DN $OU.Name
}
[/sourcecode]