Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


alex19451, я пока пытаюсь привести кошмарный код к мало-мальски вменяемому виду.

Попробуйте так:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile

Dim objFSO

Dim arrContent
Dim strLine
Dim arrRecord

Dim strDomainDNSName
Dim strDomainDN
Dim strContainerDN


If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FileExists(strSourceFile) Then
		With objFSO.OpenTextFile(strSourceFile)
			arrContent = Split(.ReadAll(), vbCrLf)
			
			.Close
		End With
		
		strDomainDNSName = WScript.CreateObject("ADSystemInfo").DomainDNSName
		strDomainDN = GetObject("LDAP://RootDSE").Get("DefaultNamingContext")
		
		For Each strLine In arrContent
			arrRecord = Split(strLine, ";")
			
			If UBound(arrRecord) = 7 Then
				strContainerDN = "ou=" & arrRecord(6) & "," & strDomainDN
				
				'!!! ВАЖНО !!!***Указываем ЗАРАНЕЕ СОЗДАННУЮ OU в которую кидаются новые пользователи *******
				
				' Создаем аккаунт пользователя домена
				With GetObject("LDAP://" & strContainerDN).Create("User", "cn=" & arrRecord(0))
					.Put "sAMAccountName", arrRecord(0) ' Login
					.SetInfo
				End With
				
				With GetObject("LDAP://cn=" & arrRecord(0) & "," & strContainerDN)
					.AccountDisabled = False  ' Enable account
					.SetPassword arrRecord(1) ' пароль
					
					.Put "userPrincipalName", arrRecord(0) & "@" & strDomainDNSName     ' UPN
					.Put "givenName",         arrRecord(2)                              ' Имя
					.Put "sn",                arrRecord(3)                              ' Фамилия
					.Put "displayName",       arrRecord(3) & " " & arrRecord(2)         ' Выводимое имя
					.Put "initials",          _
						Left(Split(arrRecord(2))(0), 1) & "." & _
						Left(Split(arrRecord(2))(1), 1) & "."                           ' Инициалы
					.Put "title",             arrRecord(4)                              ' Должность
					.Put "department",        arrRecord(5)                              ' Отдел
					.Put "Company",           arrRecord(6)                              ' Организация
					
					.Put "pwdLastSet", CLng(0)       ' Уст. Требовать смену пароля при следующем входе в систему
					.Put "ProfilePath", arrRecord(7) ' Адрес папки перемещаемого профиля пользователя
					
					.SetInfo
				End With
				
				WScript.Echo "Пользователь — " & arrRecord(6) & " добавлен в AD"
			Else
				WScript.Echo "Line [" & strLine & "] has not 7 items."
			End If
		Next
		
		WScript.Echo "Пользователи добавлены в AD"
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Добавляет пользователей в домен."
	WScript.Echo "create_users.vbs [имя файла]"
	WScript.Echo " user.txt[имя файла] — файл со списком пользователей"
	WScript.Echo " формат файла: Логин; Пароль; Имя-Отчество; Фамилия; Должность; Отдел; OU(Организация); Адрес папки профиля"
	
	WScript.Quit 1
End If

WScript.Quit 0

Содержимое исходного файла:
Код: Выделить весь код
manager4;1qaz2WSX;Ivan Ivanovich;Ivanov;manager;management;ASOIU;\\WINSERVER\Profiles\manager4
security3;1qaz2WSX;Petr Petrovich;Petrov;security;security;SIB;\\WINSERVER\Profiles\security3
Пробелы — значимые символы. В конце строки не надо ставить лишний разделитель «;».

Последний раз редактировалось Iska, 06-03-2015 в 14:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:49, 06-03-2015 | #7