PDA

Просмотр полной версии : Массовое создание пользователей на MS Server 2008 R2



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

alex_vag
18.01.2010, 15:05
Присоединяюсь к вопросу...

Morzil
18.01.2010, 15:30
А метод наследования прав, чем вас не устраивает?

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

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

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

все эти задачи я решил с помощью powerShell (про него есть хорошая базовая бесплатная книжка http://blogs.technet.com/abeshkov/archive/2008/12/24/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",$UserPrincipalName)

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

$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",$UserPrincipalName)
$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()