Войти

Показать полную графическую версию : Добавление пользователя в доменную группу в процессе создания учетной записи.


smol84
03-09-2014, 15:31
Всем здравствуйте!
Есть скрипт который создает учетную запись пользователя...

'Option Explicit

Dim sFirstName1, sFirstName2, sLastName, sFullName, sFirstNameFull, sLastNameLat, sFirstNameLat, sLogin, strUserName, dtStart
sFirstName1 = InputBox("Введите Имя")
sFirstName2 = InputBox("Введите Отчество")
sLastName = InputBox("Введите Фамилию")
sFullName = sLastName & " " & sFirstName1 & " " & sFirstName2
sFirstNameFull = sFirstName1 & " " & sFirstName2
sFirstNameLat = Rus2Lat(sFirstName1)
sLastNameLat = Rus2Lat(sLastName)
sLogin = sFirstNameLat & "." & sLastNameLat
'Проверка длины логина
if Len(sLogin) > 20 Then
sFirstNameLat = Mid(sFirstNameLat,1,1)
sLogin = sFirstNameLat & "." & sLastNameLat
End if
strUserName = sLogin
dtStart = TimeValue(Now())
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

objCommand.CommandText = _
"<LDAP://ou=users,dc=corp,dc=int>;(&(objectCategory=User)" & _
"(samAccountName=" & strUserName & "));samAccountName;subtree"

Set objRecordSet = objCommand.Execute

If objRecordset.RecordCount = 0 Then
Set objOU = GetObject("LDAP://OU=Users,DC=corp,DC=int")
Set objUser = objOU.Create _
("User", "cn=" & sFullName)
objUser.displayName = sFullName
objUser.sAMAccountName = sLogin
objUser.GivenName = sFirstName1
objUser.SN = sLastName
objUser.SetInfo
objUser.userPrincipalName = sLogin & "@corp.int"
objUser.mail = sLogin & "@corp.int"
objUser.AccountDisabled = FALSE
objUser.SetPassword "xxx"
objUser.Put "PwdLastSet", 0
objUser.SetInfo
Else
WScript.Echo "Учетная запись " & Chr(34) & sLogin & Chr(34) & " уже существует."
WScript.Quit
End If

Wscript.Echo "Учетная запись создана успешно"

Function Rus2Lat(strRus)
Dim i
Dim strTemp
Dim strLat
For i = 1 To Len(strRus)
strTemp = Mid(strRus, i, 1)
Select Case strTemp
Case "а"
strLat = strLat & "a"
Case "А"
strLat = strLat & "A"
Case "б"
strLat = strLat & "b"
Case "Б"
strLat = strLat & "B"
Case "в"
strLat = strLat & "v"
Case "В"
strLat = strLat & "V"
Case "г"
strLat = strLat & "g"
Case "Г"
strLat = strLat & "G"
Case "д"
strLat = strLat & "d"
Case "Д"
strLat = strLat & "D"
Case "е"
strLat = strLat & "e"
Case "Е"
strLat = strLat & "E"
Case "ё"
strLat = strLat & "e"
Case "Ё"
strLat = strLat & "E"
Case "ж"
strLat = strLat & "zh"
Case "Ж"
strLat = strLat & "Zh"
Case "з"
strLat = strLat & "z"
Case "З"
strLat = strLat & "Z"
Case "и"
strLat = strLat & "i"
Case "И"
strLat = strLat & "I"
Case "й"
strLat = strLat & "i"
Case "Й"
strLat = strLat & "I"
Case "к"
strLat = strLat & "k"
Case "К"
strLat = strLat & "K"
Case "л"
strLat = strLat & "l"
Case "Л"
strLat = strLat & "L"
Case "м"
strLat = strLat & "m"
Case "М"
strLat = strLat & "M"
Case "н"
strLat = strLat & "n"
Case "Н"
strLat = strLat & "N"
Case "о"
strLat = strLat & "o"
Case "О"
strLat = strLat & "O"
Case "п"
strLat = strLat & "p"
Case "П"
strLat = strLat & "P"
Case "р"
strLat = strLat & "r"
Case "Р"
strLat = strLat & "R"
Case "с"
strLat = strLat & "s"
Case "С"
strLat = strLat & "S"
Case "т"
strLat = strLat & "t"
Case "Т"
strLat = strLat & "T"
Case "у"
strLat = strLat & "u"
Case "У"
strLat = strLat & "U"
Case "ф"
strLat = strLat & "f"
Case "Ф"
strLat = strLat & "F"
Case "х"
strLat = strLat & "kh"
Case "Х"
strLat = strLat & "Kh"
Case "ц"
strLat = strLat & "tc"
Case "Ц"
strLat = strLat & "Tc"
Case "ч"
strLat = strLat & "ch"
Case "Ч"
strLat = strLat & "Ch"
Case "ш"
strLat = strLat & "sh"
Case "Ш"
strLat = strLat & "Sh"
Case "щ"
strLat = strLat & "shch"
Case "Щ"
strLat = strLat & "Shch"
Case "ъ"
strLat = strLat & ""
Case "Ъ"
strLat = strLat & ""
Case "ы"
strLat = strLat & "y"
Case "Ы"
strLat = strLat & "Y"
Case "ь"
strLat = strLat & ""
Case "Ь"
strLat = strLat & ""
Case "э"
strLat = strLat & "e"
Case "Э"
strLat = strLat & "E"
Case "ю"
strLat = strLat & "iu"
Case "Ю"
strLat = strLat & "Iu"
Case "я"
strLat = strLat & "ia"
Case "Я"
strLat = strLat & "Ia"
Case Else
'unknown symbol
strLat = strLat & strTemp
End Select

Next
Rus2Lat = strLat
End Function

Есть ряд групп
"cn=группа1,ou=Groups,dc=corp,dc=int
"cn=группа2,ou=Groups,dc=corp,dc=int
которые должны быть у пользователя по умолчанию...подскажите как можно добавить свежесозданную учетную запись в эти или к этим группам?

Iska
03-09-2014, 16:46
Script Create a User Account and Add it to a Group and an OU (http://gallery.technet.microsoft.com/scriptcenter/b9c5914e-86cc-4b2b-8b7d-6a82ab2b465d)

smol84
17-09-2014, 14:12
Таким образом можно добавить,но как это совместить с существующим скриптом,приведенным мною... к сожалению опыта не хватает это сделать.

Iska
17-09-2014, 15:23
Что именно не получается? «Существующий скрипт» Вы как-то же написали?!

smol84
17-09-2014, 15:52
ипт» Вы как-то же написали?! »
я его отредакртировал под свои нужды, за основу был взят существующий

Iska
17-09-2014, 16:40
Ну, и?
Что именно не получается? »

smol84
18-09-2014, 15:55
Вообщем решил я сначала тестировать данный скрипт в своем тестовом домене,для того что бы объединить части кода в один,а так же для простоты выявления ошибки

Сократил его для понятности

Option Explicit
Dim sFirstName1, sFirstName2, sLastName, sFullName, sLogin
sFirstName1 = "Ivan"
sLastName = "Ivanov"
sFullName = sLastName & "." & sFirstName1
sLogin = sLastName & " " & sFirstName1

Set objOU = GetObject("LDAP://OU=Users,OU=ViaMonstra,DC=corp,DC=viamonstra,DC=com")
Set objUser = objOU.Create _
("User", "cn=" & sFullName)
objUser.displayName = sFullName
objUser.sAMAccountName = sLogin
objUser.GivenName = sFirstName1
objUser.SN = sLastName
objUser.SetInfo
objUser.userPrincipalName = sLogin & "@corp.viamonstra.com"
objUser.AccountDisabled = FALSE
objUser.SetPassword "123456Qw"
objUser.Put "PwdLastSet", 0
objUser.SetInfo

Вообщем выдается вот такая ошибка
117133
Домен на windows 2012 R2
Заренее спасибо за ответ.

Iska
18-09-2014, 17:52
Вообщем выдается вот такая ошибка »
Option Explicit - Поиск в Google (https://www.google.ru/search?q=Option+Explicit)

smol84
18-09-2014, 18:33
117139
Чет переработал сегодня,надо завязывать
но напоследок задайте мне направление мысли
добавил часть кода


Set objGroup = GetObject _
("LDAP://cn=test1,OU=Groups,OU=ViaMonstra,DC=corp,DC=viamonstra,DC=com")
objGroup.Put sLogin, test1
objGroup.SetInfo

objGroup.Add objUser.ADSPath
пробовал по разному но увы...

Iska
18-09-2014, 21:19
error1.JPG »
Выложите Ваш код, обрамив его тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code), дабы было понятно, какая строка у Вас является двадцать шестой по счёту.

smol84
19-09-2014, 12:06
Dim sFirstName1, sFirstName2, sLastName, sFullName, sLogin
sFirstName1 = "Alexandr"
sLastName = "Elizarov"
sFullName = sLastName & "." & sFirstName1
sLogin = sLastName & " " & sFirstName1
Set objOU = GetObject("LDAP://OU=Users,OU=ViaMonstra,DC=corp,DC=viamonstra,DC=com")
Set objUser = objOU.Create _
("User", "cn=" & sFullName)
objUser.displayName = sFullName
objUser.sAMAccountName = sLogin
objUser.GivenName = sFirstName1
objUser.SN = sLastName
objUser.SetInfo
objUser.userPrincipalName = sLogin & "@corp.viamonstra.com"
objUser.AccountDisabled = FALSE
objUser.SetPassword "123456Qw"
objUser.Put "PwdLastSet", 0
objUser.SetInfo
Set objGroup = GetObject _
("LDAP://cn=test1,OU=Groups,OU=ViaMonstra,DC=corp,DC=viamonstra,DC=com")
objGroup.Put sLogin, test1
objGroup.SetInfo
objGroup.Add objUser.ADSPath

Iska
19-09-2014, 12:26
smol84, в Вашем коде двадцать три строки. Стало быть он отличается от того кода, который вызывал приведённую Вами ошибку на двадцать шестой строке.

smol84
19-09-2014, 12:35
в 22 строке теперь ошибка Unspecified error
это строка objGroup.Put sLogin, test1

Iska
19-09-2014, 13:20
это строка objGroup.Put sLogin, test1 »
Простите, а что Вы хотите ей получить?

smol84
19-09-2014, 15:42
Есть ряд групп
"cn=группа1,ou=Groups,dc=corp,dc=int
"cn=группа2,ou=Groups,dc=corp,dc=int
которые должны быть у пользователя по умолчанию...подскажите как можно добавить свежесозданную учетную запись в эти или к этим группам?

Iska
19-09-2014, 15:51
В примере сие делалось строкой:
objGroup.Add objUser.ADSPath

Эти группы уже существуют? Подключаетесь к объекту:
Set objIADsGroup = GetObject("LDAP://cn=группа1,ou=Groups,dc=corp,dc=int")
затем добавляете свежесозданную учётную запись в группу:
objIADsGroup.Add objUser.ADSPath
Аналогично со второй группой.

smol84
19-09-2014, 17:21
Спасибо!

Devils0411
23-12-2014, 18:02
Похожая ситуация. Выдает ошибку
http://img.tatfisher.ru/thumbs/kfkkfk.jpg (http://img.tatfisher.ru/?v=kfkkfk.jpg)


Option Explicit

Dim sFirstName1, sLastName, sFullName, sLogin, strUserName
Dim dtStart, sPassword, objConnection, objCommand
Dim objRecordSet, objOU, objUser
sLastName = InputBox("Введите Фамилию")
sFirstName1 = InputBox("Введите Имя")
sLogin = InputBox ("Введите логин")
sPassword = InputBox ("Введите пароль")
sFullName = sLastName & " " & sFirstName1
'Проверка длины логина
if Len(sLogin) > 20 Then
sFirstName1 = Mid(sFirstName1,1,1)
sLogin = sFirstName1 & "." & sLastName
End if
strUserName = sLogin
dtStart = TimeValue(Now())
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

objCommand.CommandText = _
"<LDAP://OU=Users,OU=Warehouse 8114,OU=Central region,OU=Areas,DC=RETAIL,DC=LENTA,DC=SPB,DC=RUS>;(&(objectCategory=User)" & _
"(samAccountName=" & strUserName & "));samAccountName;subtree"

Set objRecordSet = objCommand.Execute

If objRecordset.RecordCount = 0 Then
Set objOU = GetObject("LDAP://OU=Users,OU=Warehouse 8114,OU=Central region,OU=Areas,DC=RETAIL,DC=LENTA,DC=SPB,DC=RUS")
Set objUser = objOU.Create _
("User", "cn=" & sFullName)
objUser.displayName = sFullName
objUser.sAMAccountName = sLogin
objUser.GivenName = sFirstName1
objUser.SN = sLastName
objUser.SetInfo
objUser.userPrincipalName = sLogin & "@RETAIL.LENTA.SPB.RUS"
objUser.AccountDisabled = TRUE
objUser.SetPassword sPassword
objUser.Put "PwdLastSet", 1
objUser.SetInfo
Else
WScript.Echo "Учетная запись " & Chr(34) & sLogin & Chr(34) & " уже существует."
WScript.Quit
End If

Wscript.Echo "Учетная запись для" & Chr(34) & sFullName & Chr(34) & "создана успешно"


Куда копать?

Devils0411
25-12-2014, 06:54
Проблему решил :)




© OSzone.net 2001-2012