Консультация онлайн # 160929

Раздел: Windows
Автор вопроса: Vadim A. Demin
Дата: 19.02.2009, 21:12 Консультация неактивна
Поступило ответов: 2
Доброго времени суток, уважаемые эксперты!
Нужна ваша помощь. Есть в наличии сервер с Windows 2003 Standart Edition "на борту". Наслышан про широкие возможности администрирования ОС этого семейства с помощью скриптов, значительно облегчающих жизнь.
Подскажите, как написать скриптик, который бы создавал 30 новых пользователей с именами student01-student30 и каким-нибудь простеньким паролем - 123456.
И еще был бы благодарен за ссылку на какой-нибудь ресурс с "залежами" полезных для администрирования скриптов по принципу "нашел подобный - подправил под свои нужды - применил". Спасибо.

Ответ # 1, ORWBarmaley (Посетитель)

Здравствуйте, Vadim A. Demin!

Много чего хорошего взял отсюда.
Результат поиска по созданию юзера здесь.

ORWBarmaley

Посетитель
20.02.2009, 09:02
Нет оценки ответа

Ответ # 2, Megaloman (Мастер-Эксперт)

Здравствуйте, Vadim A. Demin!
У меня по скриптам есть любимая книга А.Попов Windows Script Host для Windows 2000/XP СПБ 2003 Аннотацию можно посмотреть здесь, скачать именно это издание не нашёл)
Вот здесь на русском языке есть масса материалов. Некоторые курсы в doc формате они могут Вам выслать на е-мэйл (если Вы их очень вежливо попросите). Мне выслали - я им очень благодарен. Но мне показалось, что их материалы лучше читать после ознакомления с книгой А.Попова.
Приведенные источники -"залежи" полезных для администрирования скриптов по принципу "нашел подобный - подправил под свои нужды - применил".
Вообще скрипты - вещь полезнейшая. Одно время я был сориентирован на JavaScript, теперь в основном делаю скрипты в Visual Basic Script, так как их можно писать и в качестве макросов в Excel c очень простым обменом данными из таблицы.
Решение же Вашей задачи привожу ниже (готовый файл можете загрузить). Писал несколько лет тому назад, скрипт испытанный.
Код
/********************************************************************/
/* Имя: Add_Groups_Users.js                                         */
/* Язык: JScript                                                    */
/* Описание: Создание групп на компьютере                           */
/*           Создание пользователей на компьютере                   */
/*           Помещение пользователей в группы на компьютере         */
/********************************************************************/

var NetWork=WScript.CreateObject("WScript.Network");
var NameComp=NetWork.ComputerName;     // Имя текущего компьютера

///var NameComp="ИМЯ";              // Имя произвольного компьютера

var WshShell=WScript.CreateObject("WScript.Shell"),
    ComputerObj=GetObject("WinNT://"+NameComp),       //Экземпляр объекта Computer
    Mess="";                                           //Текст сообщения

// Делаю группы

Make_Group("Rukovodstvo","Руководители");

WScript.Echo(Mess);

// Делаю юзеров
Make_User("Rukovodstvo","Логин_1_рук","Фам Имя Отч ","Должность","пароль");
Make_User("Rukovodstvo","Логин_2_рук","Фам Имя Отч ","Должность","пароль");
Make_User("Rukovodstvo","Логин_3_рук","Фам Имя Отч ","Должность","пароль");


/*************  Конец *********************************************/
// Функции

// Создаю группу с именем ng, описанием dg
function Make_Group(ng,dg)
{
  var i_err=true;
  var GroupObj=ComputerObj.Create("group",ng);  //Создаем объект класса Group
  GroupObj.Description=dg;                      //Меняем описание
  try {GroupObj.SetInfo()};                     //Сохраняем информацию на компьютере
  catch (e)
   {
     i_err=false;
     Mess+="\n Группа "+ng+" "+e.description;
   }
  if (i_err)
   {
     Mess+="\n Группа "+ng+" создана";
   }
}

// Создаю пользователя в группе ng 
//               с именем входа nu
//                   полное имя fu
//                     описание du
//             начальный пароль pu
//
function Make_User(ng,nu,fu,du,pu)
{
  var i_err=true;
  var Mess;
  var UserObj=ComputerObj.Create("user",nu);       //Экземпляр объекта User

  UserObj.FullName=fu;                             //Добавляем полное имя
  UserObj.Description=du;                          //Добавляем описание созданного пользователя
  UserObj.SetPassword(pu);                         //Добавляем пароль

  try {UserObj.SetInfo()};                         //Сохраняем информацию на компьютере
  catch (e)
   {
     i_err=false;
     Mess="\n Безуспешно пользователь "+nu+" "+e.description;
   }
  if (i_err)
   {
     Mess="\n Пользователь "+nu+" создан";
   }

   i_err=YesNever(nu);

  
   if (ng != "")  {UserInGroup(NameComp,ng,nu)};

   WshShell.Popup(Mess,1,"Создаем пользователей",64);

}

// В компьютере nc в группу ng помещаю пользователя nu
function UserInGroup(nc,ng,nu)
{
var GroupObj= GetObject("WinNT://"+nc+"/"+ng),     //Связываемся с компьютером
    UserObj,                                       //Экземпляр объекта User
    Mess;

  try {GroupObj.Add("WinNT://"+nc+"/"+nu)};       //Сохраняем информацию на компьютере
  catch (e)
   {
      Mess="\n Безуспешно в группу "+nu+" "+e.description;
      WshShell.Popup(Mess,1,"Ошибка при группировке",64);
   }
}

//// ставим юзеру птичку пароль никогда не меняется
function YesNever(NUser)
{
  var OUser,ltry=true;
  try     // Пытаемся найти имя в текущем компьютере
  {
    OUser=GetObject("WinNT://"+NameComp+"/"+NUser+",user");
  }

  catch (e)
  {
    ltry=e==0;
  }

  if (ltry)
  {
    var Never=OUser.Get("UserFlags");
    OUser.Put("UserFlags",0x10000);
    OUser.SetInfo();
  }
  return true;
}

Там сделано даже больше, чем Вы просили.
1. Вы должны иметь права администратора для компьютера, для которого выполняете скрипт.
2. Если Вы запускаете скрипт для удалённого компьютера, то надо убрать комментарий в соответствующей строке и указать имя удалённого компьютера.
var NameComp="ИМЯ"; // Имя произвольного компьютера
Естественно, там Вы должны иметь права администратора
И помните, в JavaScript каждый \ надо заменить на \\
3. В строке
Make_Group("Rukovodstvo","Руководители");
создаётся группа (здесь наименование группы Rukovodstvo, описание группы Руководители)
Если Вам это не надо, можете закомментировать строку (// перед строкой)
Или, если надо создать несколько групп, то эту строку можно повторить несколько раз с указанием нужных Вам групп.
4. Создаются пользователи в указанных Вами группах. Для этого строка
Make_User("Rukovodstvo","Логин_1_рук","Фам Имя Отч ","Должность","пароль");
повторяется для каждого пользователя.

Обязан заметить, что этот скрипт я писал еще под Win2000 и использованный провайдер WinNT: не позволяет заполнить очень многие поля в свойстве пользователя.
Скрипт, написанный с использованием провайдера LDAP у меня есть, но он специализирован под мои цели и еще не очень оформлен. Там у меня реализована двухуровневая орг. структура, не уверен, что Вам это нужно. Поэтому не показываю.

Успехов! Пишите, если будут трудности.

Megaloman

Мастер-Эксперт
20.02.2009, 19:22
Нет оценки ответа

Мини-форум консультации # 160929


Нет сообщений в мини-форуме
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.