# Компьютерные технологии > В помощь системному администратору >  Массовое создание пользователей на MS Server 2008 R2

## kaudima

Может кто знает, есть ли программа для массового создания пользователей на MS Server 2008 R2? Экспорт 4ерез Excel итд.

----------


## alex_vag

Присоединяюсь к вопросу...

----------


## Morzil

А метод наследования прав, чем вас не устраивает?

----------


## kaudima

Все устраивает. Просто надо вбить около 1000 пользователей с профилями  итд.

----------


## EAndreyF

Наконец-то я разобрался с этой проблемой:)
Так что готов поделиться результатом:D

В общем задача состоит из двух частей:
1. получение значения ячеек в excel
2. добавление пользователя в AD

все эти задачи я решил с помощью powerShell (про него есть хорошая базовая бесплатная книжка http://blogs.technet.com/abeshkov/ar...4/3172943.aspx)

И так, приступим к решению задач
1. 
$xl = new-object -com Excel.Application
$wbk="filename";
$xl.Workbooks.open($wbk) | out-null  #drop the object info output

В этих строчках мы открываем екселевский документ с именем filename

доступ к конкретной ячейке осуществляется следующим способом:
$xl.Cells.Item(2,3).Value()
или
$xl.Cells.Item($i,3).Value(), где $i - переменная

Я проверяю, что в ячейке ничего не содержится с помощью условия:
($xl.Cells.Item($i,3).Value() -match ".+") (Прочитав базовую тут всё будт понятно)

В конце работы с книгой её нужно закрыть

$xl.Workbooks.Close()

2. создать пользователя в АД

$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objUser = $objDomain.Create("user", "CN=" + $UserDisplayName+",CN=Users")

Изначально нужно задать значение переменно $UserDisplayName
Теперь, как присвоить значение полям у пользователя:

$objUser.Put("givenName",$UserFirstName) 
"givenName" - имя пользователя (не логин!)
все названия атрибутов пользователя можно посмотреть в свойствах любого пользователя в АД в части Exstensions во вкладке Attribute Editor.

Приведу самые полезные атрибуты
$objUser.Put("initials",$UserMiddleInit) 
$objUser.Put("homeDirectory",$homeDir)
$objUser.Put("profilePath",$profilePath)
$objUser.Put("sn",$UserLastName) 
$objUser.Put("sAMAccountName",$UserLoginID) 
$objUser.Put("displayName",$UserDisplayName) 
$objUser.Put("userPrincipalName",$UserPrincipalNam  e)

после задания всех атрибутов:

$objUser.SetInfo() - установить значения атрибутов
$objUser.AccountDisabled = $false -активировать аккаунт
$objUser.SetPassword("")  - установать пароль
$objUser.SetInfo()

Вот в программной реализации и всё.

Теперь как добавить пользователей в группу, и заставить их сменить пароль после первого входа в систему. Для этого выделяем вновь созданных пользователей в АД нажимаем Add to Group и выбираем соответствующую группу. Далее опять выделяем всех пользователей и нажимаем Properties и ставим активным переключатель User must change password at next log on.

Вот и всё, теперь создание множества пользователей не проблема.

И напоследок приведу исходный код:
$xl = new-object -com Excel.Application
$wbk="c:\tmp\09bimag.xls";
$xl.Workbooks.open($wbk) | out-null  #drop the object info output
$i=2;
$group="09BI_MAG"
do
{
$name=$xl.Cells.Item($i,3).Value()
$initial=$xl.Cells.Item($i,4).Value()
$second=$xl.Cells.Item($i,5).Value()
$user=$xl.Cells.Item($i,6).Value()
$profilePath="\\neptune\winProfiles\"+$user
$homeDir="\\neptune\winProfiles\"+$group
$domainName="bim.hse.nnov.ru"
$i++
$UserFirstName = $name #givenName (i.e. First Name)
$UserMiddleInit = $initial #initials (i.e. Middel Initial)
$UserLastName = $second #sn or SurName (i.e. Last Name)
$UserLoginID = $user #sAMAccountName; Pre-Windows 2000 login ID
$UserPrincipalName = $user #secondary login ID or Active Directory Login ID
$UserPrincipalName = $UserPrincipalName + "@" + $domainName  #append your domain name here

If ($UserMiddleInit -ne "")
{
  $UserDisplayName = $UserFirstName + " " + $UserMiddleInit + ". " + $UserLastName #DisplayName & CN Name
}
else
{
  $UserDisplayName = $UserFirstName + " " + $UserLastName #DisplayName & CN Name
}
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objUser = $objDomain.Create("user", "CN=" + $UserDisplayName+",CN=Users") #This creates a local object for you to update
$objUser.Put("givenName",$UserFirstName) 
$objUser.Put("initials",$UserMiddleInit) 
$objUser.Put("homeDirectory",$homeDir)
$objUser.Put("profilePath",$profilePath)
$objUser.Put("sn",$UserLastName) 
$objUser.Put("sAMAccountName",$UserLoginID) 
$objUser.Put("displayName",$UserDisplayName) 
$objUser.Put("userPrincipalName",$UserPrincipalNam  e)
$objUser.SetInfo() #This will create the User ID on the domain, disabled.  This is required for you to set a password or enable the ID.
$objUser.AccountDisabled = $false #By default the User ID is disabled and must be enabled to use.
$objUser.SetPassword("") #Set this password to anything you need it to be
$objUser.SetInfo()
}
while ($xl.Cells.Item($i,3).Value() -match ".+")
$xl.Workbooks.Close()

----------

artcont (01.09.2011)

----------

