Войти

Показать полную графическую версию : Скрипт для автоматического создание учетных записей пользователей Windows


SLAVUNCHIK
20-07-2018, 10:55
Здравствуйте форумчане! Необходим ваш совет и помощь

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

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

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

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

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

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

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

Kazun
20-07-2018, 11:01
PowerShell:

The new local user and group cmdlets in PowerShell 5.1 - https://4sysops.com/archives/the-new-local-user-and-group-cmdlets-in-powershell-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/powershell/module/microsoft.powershell.localaccounts/new-localuser?view=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/powershell/module/microsoft.powershell.localaccounts/add-localgroupmember?view=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
Спасибо, буду пробовать

megaloman
20-07-2018, 11:48
SLAVUNCHIK, /********************************************************************/
/* Имя: 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
Работало в XP, Server 2003, кажется в Win 7. На остальном не пробовал. »
Работать должно от NT4 и по сю пору.

booksermc
23-07-2018, 09:08
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
Не стал создавать новую тему, нашёл подобную.
Вопрос в следующем. У меня есть команда:
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
Можно ли сюда же "прикрутить" добавление в группу AD? Чтобы было всё в одной команде. »
Нет, т. к. это разные функции.

Rizotto
24-10-2021, 09:18
Очень прошу поделиться рабочим скриптом для создания пользователя с правами администратора.
Нужно скрипт добавить в планировщик.

Elven
24-10-2021, 13:50
Создание пользователя в планировщик? Какая цель этим преследуется?
Ну и рабочий скрипт здесь в этой ветке уже есть и для создания пользователя и для добавления его в группу администраторов. см. #2 (http://forum.oszone.net/post-2822793-2.html)

Rizotto
24-10-2021, 22:39
Создание пользователя в планировщик? Какая цель этим преследуется? »
Здесь скрипты обсуждают? Или кому что зачем нужно?
Нет желания помочь лучше промолчать.
Или Вы хотите возвысится над незнающими?

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




© OSzone.net 2001-2012