Wednesday, October 7, 2009

add users from csv into AD PowerShell Script

#########################################################################
#########################################################################
##
## Скрипт для добавления пользователей
## с рассортировкой их по филиалам
## активный с дефолтным паролем
## с галкой изменить пароль при следующем входе.
##
#########################################################################
#########################################################################


$dataSource=import-csv "user3.csv"
$profilePath='\\server-name\profiles\%username%'

foreach($dataRecord in $dataSource) {

#map variables to data source
$ou=$dataRecord.branch
$sAMAccountName=$dataRecord.AccountName
$cn=$dataRecord.cn
$position=$datarecord.position
$userPrincipalName=$sAMAccountName+"@test.com"

#Создать пользователя
$objOU=[ADSI]"LDAP://ou=$ou,dc=test,dc=com"
$objUser=$objOU.Create("user","cn="+$sAMAccountName)

#Заполнить поля пользователя
$objUser.Put("sAMAccountName",$sAMAccountName)
$objUser.Put("title",$position)
$objUser.Put("DisplayName",$cn)
$objUser.Put("profilePath",$profilePath)
$objUser.Put("userPrincipalName",$userPrincipalName)
$objUser.SetInfo()

#в PoSh учетка создается задизейбленой, т.к. нет пароля. Пароль присваивается отдельно.
$objUser.SetPassword("##############")

#активировать учетку
$objUser.psbase.InvokeSet("AccountDisabled",$false)

#требовать смену пароля при следующем входе в систему
$objUser.put("PwdLastSet",0)
$objUser.SetInfo()}