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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - скрипт, создающий нового пользователя, группу, и добавляющий пользователя в группу

Ответить
Настройки темы
WMI - скрипт, создающий нового пользователя, группу, и добавляющий пользователя в группу

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


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

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


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

Отправлено: 16:17, 10-01-2012

 

Аватара для cameron

Ветеран


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

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


это принципиально делать именно через WMI?

-------
в личке я не консультирую и не отвечаю на профессиональные вопросы. для этого есть форум.


Отправлено: 16:23, 10-01-2012 | #2



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

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


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


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

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


cameron, к сожалению, думаю да

Отправлено: 16:30, 10-01-2012 | #3


Ветеран


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

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


Через WMI это сделать нельзя,можно использовать провайдер WinNT,самый простой и наверно лучший вариант использовать утилиту net.

net user /?
net localgroup /?

Отправлено: 16:41, 10-01-2012 | #4


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


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

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


Есть предполагаемый план работы, взгляните
читать дальше »
План работы
1. Сначала необходимо создать нового пользователя через WMI, используя WSH.
2. Далее, создать на компьютере группу и добавить в неё созданного пользователя.
3. Автоматически создать сетевой диск L: при помощи WMI. Пример на VBS:
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create _
("C:\SomeDir", "SomeShareName", FILE_SHARE, _
MAXIMUM_CONNECTIONS, "Public share for the student.")
Wscript.Echo errReturn
4. В основном скрипте добавить команды создания logon-скрипт в папке с сетевым диском. Также основной скрипт должен прописать в созданный файл все необходимые команды.
5. Через основной скрипт прописать пользователю путь к logon-скрипту.
6. В logon-скрипте реализовать автоматическое подключение сетевых дисков

Отправлено: 16:44, 10-01-2012 | #5


Ветеран


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

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


Все действия решаются утилитой net,для создания общей папки использовать net share /? ,для подключения общей папки net use /?.

Отправлено: 16:46, 10-01-2012 | #6


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


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

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


Kazun, без этой утилиты никак не обойтись? Не предcтавляю как ею пользоваться ;_;

Отправлено: 17:04, 10-01-2012 | #7


Ветеран


Contributor


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

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


Разыскал у себя в архиве: когда-то давно делал похожие задачи WSH на JS. Если пригодится, буду рад.
Подключение сетевых дисков
читать дальше »
Код: Выделить весь код
/********************************************************************/
/* Язык: JScript                                                    */
/* Описание: Отключение и подключение сетевых дисков                */
/********************************************************************/

var WshNetwork,
    WshShell,
    Drive,
    NetPath,
    Port, 
    NetPrinter,
    Mess,
    Mess_On,
    IsError;
//Инициализируем константы для диалоговых окон
var vbCritical=16,vbInformation=64; 

WshNetwork = WScript.CreateObject("WScript.Network");  //Создаем объект WshNetwork
WshShell = WScript.CreateObject("WScript.Shell");      //Создаем объект WshShell



Mess_On=""

Mess_On+=DiskConnect("M:","\\\\Имя_сервера1\\Имя_ресурса1");
Mess_On+=DiskConnect("N:","\\\\Имя_сервера2\\Имя_ресурса2");
Mess_On+=DiskConnect("K:","\\\\Имя_сервера3\\Имя_ресурса3");
Mess_On+=DiskConnect("P:","\\\\Имя_сервера4\\Имя_ресурса4");

WshShell.Popup(Mess_On,10,"Подключение сетевого диска",vbInformation);

/*************  Конец *********************************************/

function DiskConnect(Drive,NetPath)
{
/*************  Отключение сетевого диска  ***********************/
if (false) {    //Этот блок отключен за ненадобностью, текст оставлен для примера

IsError=false;

try {WshNetwork.RemoveNetworkDrive(Drive);}   //Отключаем сетевой диск

catch (e)                       //Обрабатываем возможные ошибки
 {  
   if (e != 0)                  //Выводим сообщение об ошибке
     {
       IsError=true;
       Mess="Ошибка при отключении диска "+Drive+"\nКод ошибки: "+
         e.number+"\nОписание: "+e.description;
       WshShell.Popup(Mess,0,"Отключение сетевого диска",vbCritical);
     }
  }
if (!IsError)                   //Все в порядке
  { 
    Mess="Диск "+Drive+" отключен успешно";
    WshShell.Popup(Mess,0,"Отключение сетевого диска",vbInformation);
  }
}

/*************  Подключение сетевого диска  ***********************/

IsError=false;
try  {WshNetwork.MapNetworkDrive(Drive,NetPath);}    //Подключаем сетевой диск
  
catch (e)           //Обрабатываем возможные ошибки
  { 
   if (e != 0)      //Выводим сообщение об ошибке  
     {
        IsError=true;
        return Drive+" не подключен к " + NetPath+ " " +e.description + "\n";
     }
  }
if (!IsError)      //Все в порядке
  {
    return Drive+"    подключен к " + NetPath+"\n" ;
  }
return "";
}

Создание групп,пользователей,помещение пользователей в группу
читать дальше »
Код: Выделить весь код
/********************************************************************/
/* Имя: Add_Groups_Users.js                                         */
/* Язык: JScript                                                    */
/* Описание: Создание групп на компьютере                           */
/*           Создание пользователей на компьютере                   */
/*           Помещение пользователей в группы на компьютере         */
/********************************************************************/

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

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

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

Make_Group("Наименование_Группы1","Описание, например: Отдел рогов и копыт");
Make_Group("Наименование_Группы2","Описание, например: Отдел хвостов и ушей");

WScript.Echo(Mess);

// Делаю юзеров
Make_User("Наименование_Группы1","Ivanov","Иванов Александр Петрович","Начальник отдела","пароль"); 
Make_User("Наименование_Группы2","Sidorov","Сидоров Александр Петрович","Зам. Начальника отдела","пароль"); 
Make_User("","Barmaley","Бармалей Александр Петрович","Инженер по инф. безопасности","пароль"); 


// Помещаю юзеров в группы, отличные от первоначальных

UserInGroup(NameComp,"Администраторы","Barmaley");
UserInGroup(NameComp,"Наименование_Группы2","Ivanov");


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

// Создаю группу с именем 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;
}

Почитать можно здесь

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 11-01-2012 в 19:42.


Отправлено: 19:34, 11-01-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - скрипт, создающий нового пользователя, группу, и добавляющий пользователя в группу

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] AD: Возможно ли добавление в группу одного домена пользователя из другого домена? sea707 Microsoft Windows NT/2000/2003 5 24-05-2011 02:42
AD Добавление пользователя в группу в терминале проблема Arthes Microsoft Windows NT/2000/2003 0 16-03-2011 16:38
VBS/WSH/JS - Скрипт для добавление пользователя в группу AD HuppeR Скриптовые языки администрирования Windows 0 20-10-2010 17:44
Создание пользователя в АД+авто добавление его в группу loger11 Microsoft Windows NT/2000/2003 5 19-04-2007 05:21
Как добавить пользователя в группу администраторов из DOS babki Microsoft Windows 2000/XP 2 09-01-2006 13:49




 
Переход