Может кто знает, есть ли программа для массового создания пользователей на MS Server 2008 R2? Экспорт 4ерез Excel итд.
alex_vag
18.01.2010, 15:05
Присоединяюсь к вопросу...
А метод наследования прав, чем вас не устраивает?
Все устраивает. Просто надо вбить около 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()
Powered by vBulletin™ Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot