Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - HELP!. Не работает скрипт заведения пользователей в AD

Ответить
Настройки темы
VBS/WSH/JS - HELP!. Не работает скрипт заведения пользователей в AD

Новый участник


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

Профиль | Отправить 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
Благодарности: 1563

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


Цитата userovich2:
Возникает ошибка NO SUCH OBJECT на строке group = GetObject("LDAP://... . »
вставьте перед каждой командой "group = GetObject("LDAP://..." вывод на экран:
Код: Выделить весь код
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");
...и проверьте наличие указанного объекта в AD

Отправлено: 07:39, 24-10-2010 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

Профиль | Отправить 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
Благодарности: 0

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


Ребят, с LDAP запросом разобрался, dsquery все прояснил, но возникла другая ошибка
на строке group.add (user.adsPath()); ошибка - Object doesn't support this property or method

в чем тут может быть дело?

Отправлено: 23:17, 24-10-2010 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - HELP!. Не работает скрипт заведения пользователей в AD

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Нужен скрипт 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




 
Переход