Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Добавление пользователя в доменную группу в процессе создания учетной записи. (http://forum.oszone.net/showthread.php?t=287427)

smol84 03-09-2014 15:31 2397871

Добавление пользователя в доменную группу в процессе создания учетной записи.
 
Всем здравствуйте!
Есть скрипт который создает учетную запись пользователя...

'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 2397914

Script Create a User Account and Add it to a Group and an OU

smol84 17-09-2014 14:12 2403946

Таким образом можно добавить,но как это совместить с существующим скриптом,приведенным мною... к сожалению опыта не хватает это сделать.

Iska 17-09-2014 15:23 2403973

Что именно не получается? «Существующий скрипт» Вы как-то же написали?!

smol84 17-09-2014 15:52 2403986

Цитата:

Цитата Iska
ипт» Вы как-то же написали?! »

я его отредакртировал под свои нужды, за основу был взят существующий

Iska 17-09-2014 16:40 2404004

Ну, и?
Цитата:

Цитата Iska
Что именно не получается? »


smol84 18-09-2014 15:55 2404469

Вложений: 1
Вообщем решил я сначала тестировать данный скрипт в своем тестовом домене,для того что бы объединить части кода в один,а так же для простоты выявления ошибки

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

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 2404513

Цитата:

Цитата smol84
Вообщем выдается вот такая ошибка »

Option Explicit - Поиск в Google

smol84 18-09-2014 18:33 2404529

Вложений: 1
Файл 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 2404606

Цитата:

Цитата smol84
error1.JPG »

Выложите Ваш код, обрамив его тэгом [code], дабы было понятно, какая строка у Вас является двадцать шестой по счёту.

smol84 19-09-2014 12:06 2404777

Код:

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 2404785

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

smol84 19-09-2014 12:35 2404790

в 22 строке теперь ошибка Unspecified error
это строка objGroup.Put sLogin, test1

Iska 19-09-2014 13:20 2404804

Цитата:

Цитата smol84
это строка objGroup.Put sLogin, test1 »

Простите, а что Вы хотите ей получить?

smol84 19-09-2014 15:42 2404875

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

Iska 19-09-2014 15:51 2404877

В примере сие делалось строкой:
Код:

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 2404917

Спасибо!

Devils0411 23-12-2014 18:02 2447346

Похожая ситуация. Выдает ошибку


Код:

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 2447936

Проблему решил :)


Время: 02:40.

Время: 02:40.
© OSzone.net 2001-