|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - HELP!. Не работает скрипт заведения пользователей в AD |
|
VBS/WSH/JS - HELP!. Не работает скрипт заведения пользователей в AD
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Знающие люди, помогите пожалуйста разобраться. Срочно нужно.
Есть скрипт с параметрами командной строки, для заведения пользователей в домен. Но добавление пользователя в группу (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> Буду благодарен за любую помощь. |
|
Отправлено: 00:39, 24-10-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата userovich2:
WScript.Echo("LDAP://CN="+sGroup+",OU=AutoCreation,DC=main,DC=domain,DC=ru"); group = GetObject("LDAP://CN="+sGroup+",OU=AutoCreation,DC=main,DC=domain,DC=ru"); ... WScript.Echo("LDAP://CN="+sGroup+",OU=AutoCreation,DC=ctx,DC=main,DC=domain,DC=ru"); group = GetObject("LDAP://CN="+sGroup+",OU=AutoCreation,DC=ctx,DC=main,DC=domain,DC=ru"); |
|
Отправлено: 07:39, 24-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать 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 что еще можно придумать? впринципе, можно группу, в которую добавлять, жестко прописать, без выбора, если так будет проще реализация. |
Отправлено: 15:47, 24-10-2010 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Ребят, с LDAP запросом разобрался, dsquery все прояснил, но возникла другая ошибка
на строке group.add (user.adsPath()); ошибка - Object doesn't support this property or method в чем тут может быть дело? |
Отправлено: 23:17, 24-10-2010 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD | alex_frog | Скриптовые языки администрирования Windows | 6 | 22-07-2009 18:41 | |
[решено] Не стартует Logon скрипт от пользователей домена. | assker | Microsoft Windows NT/2000/2003 | 3 | 22-07-2009 15:00 | |
Скрипт для проверки списка пользователей и их удаление из AD | alex_frog | Microsoft Windows NT/2000/2003 | 0 | 22-07-2009 13:16 | |
CMD/BAT - Скрипт для копирования пользователей. | mitiya | Скриптовые языки администрирования Windows | 6 | 30-04-2009 16:13 | |
Скрипт для создания пользователей | Ven | Microsoft Windows NT/2000/2003 | 6 | 24-02-2008 23:57 |
|