Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт для автоматического создание учетных записей пользователей Windows (http://forum.oszone.net/showthread.php?t=335809)

SLAVUNCHIK 20-07-2018 10:55 2822789

Скрипт для автоматического создание учетных записей пользователей Windows
 
Здравствуйте форумчане! Необходим ваш совет и помощь

Имеется Windows Server 2016, Active Directory в сети не используется, сеть - простая рабочая группа с поднятием списка компьютеров сети мастер-браузером

Задача создать 50 учетных пользователей и разнести их по группам, хочется это делать автоматически, потому как будут и другие еще сервера , на которые нужно прописывать тех же пользователей, а времени на долгоиграющие настройки нет

как можно автоматизировать процесс, чтобы вручную не тыкать 50 раз "Новый пользователь" в оснастке "Локальные пользователи и группы" > "Пользователи" ?

В сети много написано по автоматическому созданию пользователей в AD, но мне это не подходит, нужно создать простые учетки сразу с паролем, описанием и разнесением по группам.

Если кто сможет дать хотя бы пример скрипта.

Првильно ли я думаю, что механизм создания учеток примерно одинаков для всех систем начиная от Windows XP, и можно ли на всех системах использовать однотипный скрипт?

Заранее благодарю за интерес к проблеме и любой дельный совет. AD создавать не предлагайте, в моих условиях это не возможно, только рабочая группа.

Kazun 20-07-2018 11:01 2822793

PowerShell:

The new local user and group cmdlets in PowerShell 5.1 - https://4sysops.com/archives/the-new...owershell-5-1/

Код:

PS > Get-Command -Module Microsoft.PowerShell.LocalAccounts

CommandType    Name                                              Version    Source
-----------    ----                                              -------    ------
Cmdlet          Add-LocalGroupMember                              1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Disable-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Enable-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Get-LocalGroup                                    1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Get-LocalGroupMember                              1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Get-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          New-LocalGroup                                    1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          New-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Remove-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Remove-LocalGroupMember                            1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Remove-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Rename-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Rename-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Set-LocalGroup                                    1.0.0.0    Microsoft.PowerShell.LocalAccounts
Cmdlet          Set-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts

Потребуются New-LocalUser - https://docs.microsoft.com/en-us/pow...powershell-5.1

Код:

PS C:\> $Password = Read-Host -AsSecureString
PS C:\> New-LocalUser "User03" -Password $Password -FullName "Third User" -Description "Description of this account."
Name    Enabled  Description
----    -------  -----------
User03  True    Description of this account.

Add-LocalGroupMember - https://docs.microsoft.com/en-us/pow...powershell-5.1
Код:

PS C:\> Add-LocalGroupMember -Group "Administrators" -Member "Admin02", "MicrosoftAccount\username@Outlook.com", "AzureAD\DavidChew@contoso.com", "CONTOSO\Domain Admins"

SLAVUNCHIK 20-07-2018 11:15 2822798

Спасибо, буду пробовать

megaloman 20-07-2018 11:48 2822809

SLAVUNCHIK,
Сто лет тому назад я управлялся с подобной сетью. Вот .js (сохранить в Windows-1251 кодировке).
Код:

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

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

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

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

Make_Group("Hunter_Dog","Охотники за собаками");
Make_Group("Hunter_Cat","Охотники за кошками");
Make_Group("Hunter_Ghost","Охотники за привидениями");
Make_Group("Hanter_Boss","Руководители живодёрской организации");
WScript.Echo(Mess);

// Делаю юзеров: Группа, Сетевое Имя, Полное имя, Должность, Пароль

///---------------------------------------------------------------------------------------------------------
Make_User("Hunter_Dog","Ivanov_I_I","Иванов Иван Иванович","Главный убийца собак","123K456563");
Make_User("Hunter_Dog","Petrov_I_I","Петров Иван Иванович","Ведущий убийца собак","444@666456");
Make_User("Hunter_Dog","Poletaeva_R_V","Полетова Розалинда Вадимовна","Статист отдела собак","");

///---------------------------------------------------------------------------------------------------------
Make_User("Hunter_Сat","Tramp_I_I","Трамп Иван Иванович","Главный убийца кошек","123K456563");
Make_User("Hunter_Сat","Obama_I_I","Обама Иван Иванович","Ведущий убийца кошек","444@666456");
Make_User("Hunter_Сat","Nuland_R_V","Нуланд Розалинда Вадимовна","Статист отдела кошек","");

///---------------------------------------------------------------------------------------------------------
Make_User("Hunter_Boss","Noroads_I_I","Бездорожный Иван Иванович","Начальник всех живодёров","123K456563");
Make_User("Hunter_Boss","Slavunchik_I_I","Славунчик Иван Иванович","Зам по информационным технологиям","444@666456");

///---------------------------------------------------------------------------------------------------------

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

UserInGroup(NameComp,"Администраторы","Slavunchik_I_I");
//UserInGroup(NameComp,"Administrators","Slavunchik_I_I");

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

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

Работало в XP, Server 2003, кажется в Win 7. На остальном не пробовал. Скрипт вытащил из древнего архива
Надо подготовить скрипт с актуальными названиями групп и описанием пользователей. Можно запустить на каждом компьютере локально, если есть права на создание пользователей. При наличии прав можно запустить и удалённо, указав имя произвольного имеющегося компьютера.
На компе создаются нужные группы. В созданных группах создаются пользователи. Созданных пользователей можно прописать также и в других группах, если они есть на компьютере, например, добавить в группу Администраторы локального или указанного компьютера.

Примечание: Любое совпадение имён или названий случайно :)

Iska 20-07-2018 12:14 2822814

Цитата:

Цитата megaloman
Работало в XP, Server 2003, кажется в Win 7. На остальном не пробовал. »

Работать должно от NT4 и по сю пору.

booksermc 23-07-2018 09:08 2823128

Kazun, здравствуйте! мне нужно задать имя компьютера, изменить рабочую группу, активировать встроенную учётку админа с вводом пароля + подтверждение пароля (символы должны скрываться, либо звёздочки) вот мой скрипт

@set /p comp_name= "name Computer= -->

echo comp_name - %comp_name%
wmic computersystem where name="%computername%" rename "%comp_name%"

дальше не могу разобраться как это реализовать

@set /p pass= "введите пароль= -->
@set /p pass2= "подтвердите пароль= -->
if "%pass%"=="%pass2%" do net user Администратор %pass2% /active
else #вернуться к строке @set /p pass= "введите пароль= -->
#помогите пожалуйста разобраться с этой задачей#

it3 11-09-2019 06:37 2887430

Не стал создавать новую тему, нашёл подобную.
Вопрос в следующем. У меня есть команда:
Код:

New-ADUser -Name "Ivanov Ivan Ivanovich" -DisplayName "Ivanov Ivan Ivanovich" -GivenName "Ivan Ivanovich" -Surname "Ivanov" -SamAccountName "ivanov.ii" -UserPrincipalName "ivanov.ii@domain.ru" -Path "OU=Users,DC=domain,DC=ru" -CannotChangePassword $false -ChangePasswordAtLogon $true -AccountPassword (ConvertTo-SecureString -AsPlainText "SuperPassword" -Force) -Enabled $true
Можно ли сюда же "прикрутить" добавление в группу AD? Чтобы было всё в одной команде. Сейчас это делаю таким образом:
Код:

Add-AdGroupMember -Identity namegroup -Members ivanov.ii

DJ Mogarych 11-09-2019 15:48 2887492

Цитата:

Цитата it3
Можно ли сюда же "прикрутить" добавление в группу AD? Чтобы было всё в одной команде. »

Нет, т. к. это разные функции.

Rizotto 24-10-2021 09:18 2969616

Очень прошу поделиться рабочим скриптом для создания пользователя с правами администратора.
Нужно скрипт добавить в планировщик.

Elven 24-10-2021 13:50 2969637

Создание пользователя в планировщик? Какая цель этим преследуется?
Ну и рабочий скрипт здесь в этой ветке уже есть и для создания пользователя и для добавления его в группу администраторов. см. #2

Rizotto 24-10-2021 22:39 2969689

Цитата:

Цитата Elven
Создание пользователя в планировщик? Какая цель этим преследуется? »

Здесь скрипты обсуждают? Или кому что зачем нужно?
Нет желания помочь лучше промолчать.
Или Вы хотите возвысится над незнающими?

Elven 25-10-2021 08:25 2969701

Если вы не имеете терпения и свободных букв чтобы сложить их слова для объяснения целей своих странных планируемых действий, за какой нужностью вам что-то помогать?
1. Создание пользователя подразумевается под собой одноразовое действие в рамках одной работающей системы.
2. Планировщик служит для выполения повторяющихся по каким-либо условиям действий.
пункты 1 и 2 имеют в себе некторое взаимоисключение, следовательно либо являются весьма спорными костылями, либо попыткой написать на коленке средство получения администраторского доступа к тому, к чему он изначально не предоставлен. Какие pro et contra вы имеете сообщить в связи с тем, на что я, таки, не пожалел букв и пальцев, которыми в них тыкал?


Время: 08:20.

Время: 08:20.
© OSzone.net 2001-