![]() |
HELP!. Не работает скрипт заведения пользователей в AD
Знающие люди, помогите пожалуйста разобраться. Срочно нужно.
Есть скрипт с параметрами командной строки, для заведения пользователей в домен. Но добавление пользователя в группу (function addUserToGroup(user) не работает. Возникает ошибка NO SUCH OBJECT на строке group = GetObject("LDAP://... . (в самом конце скрипта) Где тут грабли? В принципе можно группу и фиксированной прописать, но опять же как? Собственно сам скрипт: <JOB id="ADNewUser"> <script language="JScript"> var sLastName, sFirstName, sMiddleName, sComment, sLogin, sPassword, sDomain, sGroup; var oADUsers, oItem, oEnum, bIsExist, i; // Сверяем аргументы запуска скрипта. Если кол-во аргументов меньше 8, то выводим помошь if((WScript.Arguments.length < 8) || ((WScript.Arguments.length == 1) && (WScript.Arguments(0) == "/?"))) { printHelp(); } else { // Фамилия нового пользователя sLastName = WScript.Arguments(0); // Имя нового пользователя sFirstName = WScript.Arguments(1); // Первая буква отчества нового пользователя sMiddleName = WScript.Arguments(2); // Коментарий. Подразделение нового пользователя sComment = WScript.Arguments(3); // Логин нового пользователя sLogin = WScript.Arguments(4); // Пароль нового пользователя sPassword = WScript.Arguments(5); // Домен нового пользователя sDomain = WScript.Arguments(6); // Группа нового пользователя sGroup = WScript.Arguments(7); // Если данные нового пользователя корректны, и он не зарегистрирован в домене, то запускается процесс создания пользователя if(checkUserInfo()) { if(sDomain == "main.domain.ru") { oADUsers = GetObject("LDAP://OU=AutoCreation,DC=main,DC=domain,DC=ru"); } else { oADUsers = GetObject("LDAP://OU=AutoCreation,DC=ctx,DC=main,DC=domain,DC=ru"); } oEnum = new Enumerator(oADUsers); if(!isUserExist()) { // Создаём пользователя createUser(); } } } WScript.Quit(); // Вывод помощи function printHelp() { WScript.Echo("СИНТАКСИС:\n"); WScript.Echo("C:\\cscript ADNewUser.wsf Фамилия Имя Отчество комментарий логин пароль домен группа\n\n"); WScript.Echo("Домен:\n"); WScript.Echo("1 - main.domain.ru\n"); WScript.Echo("2 - ctx.domain.ru\n\n"); WScript.Echo("ПРИМЕР:\n"); WScript.Echo("C:\\cscript ADNewUser.wsf \"Иванов\" \"Иван\" \"И\" \"УРП\" \"newuser\" \"q1239\" \"1\" \"users\"\n\n"); } // Проверка корректности данных пользователя function checkUserInfo() { bIsOk = false; if((sLastName != null) && (sFirstName != null) && (sMiddleName != null) && (sComment != null) && (sLogin != null) && (sPassword != null) && (sDomain != null)) { if((sLastName.length >= 2) && (sFirstName.length >= 2) && (sMiddleName.length == 1) && ((sComment.length >= 2) && (sComment.length <= 1000)) && (sLogin.length >= 3) && (sPassword.length >= 4) ) { bIsOk = true; } else { WScript.Echo("Неверная информация о пользователе!\n\n"); printHelp(); } } else { WScript.Echo("Неполная информация о пользователе!\n\n"); printHelp(); } return bIsOk; } // Проверка на наличие пользователя в домене function isUserExist() { bIsExist = false; while(!oEnum.atEnd()) { oItem = oEnum.item(); if(oItem.SamAccountName.toUpperCase() == sLogin.toUpperCase()) { bIsExist = true; WScript.Echo("Пользователь \"" + oItem.SamAccountName + "\" уже зарегистрирован в домене!\n\n"); break; } oEnum.moveNext(); } return bIsExist; } // Создание нового пользователя function createUser() { var oNewUser = oADUsers.Create("user", "cn=" + sFirstName + " " + sMiddleName + ". " + sLastName); // Записываем атрибуты нового пользователя oNewUser.Put("samAccountName", sLogin); if(sDomain == "main.domain.ru") { oNewUser.Put("userPrincipalName", sLogin + "@main.domain.ru"); } else { oNewUser.Put("userPrincipalName", sLogin + "@ctx.main.domain.ru"); } oNewUser.Put("initials", sMiddleName + "."); oNewUser.Put("givenName", sFirstName); oNewUser.Put("sn", sLastName); oNewUser.Put("displayName", sFirstName + " " + sMiddleName + ". " + sLastName); oNewUser.Put("description", sComment); oNewUser.setInfo(); // Записываем спец. атрибуты нового пользователя (0x00000002 - включить пользователя, 0x00010000 - пароль пользователя не ограничен по сроку действия) var sVars = oNewUser.Get("userAccountControl"); sVars = sVars ^= 0x00000002; sVars = sVars ^= 0x00010000; oNewUser.Put("userAccountControl", sVars); oNewUser.setInfo(); // Записываем пароль нового пользователя oNewUser.SetPassword(sPassword); oNewUser.setInfo(); addUserToGroup(oNewUser); } // Добавление пользователя к группе function addUserToGroup(user) { if(sDomain == "main.domain.ru") group = GetObject("LDAP://CN="+sGroup+",OU=AutoCreation,DC=main,DC=domain,DC=ru"); else group = GetObject("LDAP://CN="+sGroup+",OU=AutoCreation,DC=ctx,DC=main,DC=domain,DC=ru"); group.add (user.adsPath()); group.setInfo(); } </SCRIPT> </JOB> Буду благодарен за любую помощь. |
Цитата:
Код:
WScript.Echo("LDAP://CN="+sGroup+",OU=AutoCreation,DC=main,DC=domain,DC=ru"); |
amel27, спасибо большое за ответ, строки добавил, запрос выводится в виде LDAP://CN=имя моей группы,OU=AutoCreation,DC=main,DC=domain,DC=ru
Группа в домене существует, пользователь создается в OU AutoCreation, но в эту группу не добавляется, все та же ошибка на строке group = GetObject("LDAP://CN="+sGroup+",OU=AutoCreation,DC=main,DC=domain,DC=ru"); - NO SUCH OBJECT IN THE SERVER что еще можно придумать? впринципе, можно группу, в которую добавлять, жестко прописать, без выбора, если так будет проще реализация. |
Ребят, с LDAP запросом разобрался, dsquery все прояснил, но возникла другая ошибка
на строке group.add (user.adsPath()); ошибка - Object doesn't support this property or method в чем тут может быть дело? |
Время: 09:12. |
Время: 09:12.
© OSzone.net 2001-