Question : Powershell script to create AD accounts from spreadsheet - revisited

Ok I posted a question a while back on this.. a smart guy helped me out very quickly with a section of code.  I've ran into a problem with that we've just noticed.  All of the user accounts created with that put the username in a format such as: John Smith - JoSmith.  So first two letters of the first name, then last name.  Which is not how we do it here.. it's the standard First initial, last name...so: Jsmith.  Here is the code.. I'm hoping someone can point out a simple typo to me..
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
## define constants
$domainstr = ",dc=difc,dc=root01,dc=org"
$domainnb = "difc"             ## domain netbios name
$domain = "difc.root01.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 c:\users\bhart.difc\desktop\importusers.csv | foreach {

## create user name
#	$strusr = $_.Last + " " + $_.First
    $strusr = $_.SN + " " + $_.givenName
#    $last = $_.SN 
#    $first = $_.givenName
    
 #   $strusr = $_.last + " " + $_.first
	$strusr	
 	$ldapstr = "LDAP://OU=" + $_.OU + $domainstr

	$target = [ADSI] $ldapstr
	$newuser = $target.create("user", "cn=" + $strusr)
	$newuser.SetInfo()
	
        $userid = $_.givenName[0]+$_.givenName[1]+$_.SN
	if ($userid.length -gt 20){$userid = $userid.substring(0,20)}
# echo $userid;exit;      	
	$newuser.samaccountname = $userid.ToString()
	$newuser.givenName =  $_.givenName
	$newuser.sn = $_.SN
	$newuser.displayName = $_.displayName
	$newuser.userPrincipalName = $_.givenName[0]+$_.givenName[1]+$_.SN + "@" + $domain
    $newuser.company =$_.company
    $newuser.mail = $_.mail
    $newuser.division = $_.division
    $newuser.employeeType = $_.empType
    $newuser.employeeID = $_.empID
    $newuser.telephoneNumber = $_.telephoneNumber
    $newuser.description = $_.description
	$newuser.SetInfo()

#	$newuser.SetPassword($defaultPassword.ToString())
    $newuser.SetPassword($_.password)
## 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

}


Thanks!

Answer : Powershell script to create AD accounts from spreadsheet - revisited


Then you want to change this line:

        $userid = $_.givenName[0]+$_.givenName[1]+$_.SN

For this one:

        $userid = "$($_.givenName[0])$($_.SN)"

HTH

Chris
Random Solutions  
 
programming4us programming4us