## define constants
$domainstr = ",dc=starking,dc=org"
$domainnb = "starking" ## domain netbios name
$domain = "starking.org"
$ADs_UF_NORMAL_ACCOUNT = 512 ## enables account and sets password required
## get default passsword - encrypted so not stored in script
$defaultPassword = Read-Host "Please enter default Password" -asSecureString
## get the list of users from the CSV file
## if need other user properties can add to CSV
## could speed processing by sortng user list by OU but need code
## to handle change of OU. This is simpler as an example
Import-csv users.txt | foreach {
## create user name
$strusr = $_.Last + " " + $_.First
$strusr
$ldapstr = "LDAP://OU=" + $_.OU + $domainstr
$target = [ADSI] $ldapstr
$newuser = $target.create("user", "cn=" + $strusr)
$newuser.SetInfo()
$userid = $_.first[0]+$_.first[1]+$_.last
if ($userid.length -gt 20){$userid = $userid.substring(0,20)}
$newuser.samaccountname = $userid.ToString()
$newuser.givenName = $_.first
$newuser.sn = $_.last
$newuser.displayName = $_.last + " " + $_.first
$newuser.userPrincipalName = $_.first[0]+$_.first[1]+$_.last + "@" + $domain
$newuser.SetInfo()
$newuser.SetPassword($defaultPassword.ToString())
## normal user that requires password & is enabled
$newuser.userAccountControl = $ADs_UF_NORMAL_ACCOUNT
$newuser.SetInfo()
# set User must change password at next logon flag
$newuser.pwdLastSet = 0
$newuser.SetInfo()
## now set the country
$newuser.c = $_.Country
$newuser.SetInfo()
Write-Host "Created Account for: " $newuser.Displayname
}
|