Показано с 1 по 5 из 5
Древовидный режим
-
29.01.2010, 15:53 #5
- Регистрация
- 13.01.2010
- Сообщений
- 4
- Сказал(а) спасибо
- 0
- Поблагодарили 1 раз в 1 сообщении
Создание множества пользователей на основе таблицы Excel
Наконец-то я разобрался с этой проблемой:)
Так что готов поделиться результатом: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()
-
Пользователь сказал cпасибо:
artcont (01.09.2011)
Похожие темы
-
Для Windows server 2008 r2 (Украшенства, активация)
от evgeny2009 в разделе Операционные системыОтветов: 2Последнее сообщение: 07.11.2010, 19:07 -
Антивирус на Windows Server 2008
от Cross в разделе СОФТ (SOFT)Ответов: 4Последнее сообщение: 29.01.2010, 08:13 -
Хранение профилей пользователей на MS Server 2008 R2
от EAndreyF в разделе В помощь системному администраторуОтветов: 3Последнее сообщение: 25.01.2010, 14:51 -
VirtualBox на MS Server 2003
от Александр7 в разделе В помощь системному администраторуОтветов: 4Последнее сообщение: 19.11.2009, 23:55 -
Terminal Server на Server 2008
от hipjitikara в разделе В помощь системному администраторуОтветов: 1Последнее сообщение: 30.09.2009, 09:39
Социальные закладки