Скрипт создания пользователя windows powershell

Как получить список локальных пользователей в Powershell и создать нового

02 августа 2019

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

Если нам нужно увидеть параметры, которые команды еще принимают, можно выполнить эту команду (на примере Get-LocalUser):

Навигация по посту

Получение списка локальных пользователей в Powershell Get-ADUser

Так мы получим список учетных записей:

Мы можем получить такую информацию не обо всех учетных записях, а из конкретных групп. Так я получу локальных администраторов т.к. они находятся в соответствующей группе:

Если требуется получить какие-то дополнительные параметры (свойства) объекта. Для того что бы узнать все параметры:

А что бы вывести их все сразу:

Так, например, я получу все объекты, которые активны:

А так даты последнего входа только у тех объектов, которые включены:

Создание локального пользователя Powershell и добавление в группу

Так мы создадим нового пользователя с именем «IT_Support» с паролем «Parol12!»:

Если мы не укажем ключ PasswordNeverExpires — пароль будет действовать месяц.

Затем добавим нового пользователя в группу администраторов:

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

При создании нового объекта есть еще несколько ключей:

  • AccountExpires — время активности учетной записи. Если не указан этот ключ, то такого срока нет. Если мы хотим указать этот срок нам нужна переменная datetime. Примеры с датой и временем в Powershell мы уже разбирали.
  • AccountNeverExpires — если не указан ключ выше, то у нас работает этот ключ.
  • Description — описание учетной записи по желанию.
  • Disabled — по умолчанию аккаунт включен, мы можем указать обратное.
  • FullName — имя и фамилия например.
  • NoPassword — учетная запись создается без пароля.
  • UserMayNotChangePassword — запрещает смену пароля.

Удаление локальных пользователей

Для примера так мы можем удалить объект, который создавали раннее из группы:

Если мы хотим отключить объект:

Смена пароля локального администратора в Powershell

Изменение существующих объектов делается с помощью команд с глаголом Set. На примере администратора сменим пароль:

Мы можем изменить все те же параметры, что и в случае создания учетной записи (перечислены выше). Например так мы можем отключить срок действия пароля:

Отсутствуют только те ключи, которые выведены в отдельный командлет. Например так мы можем включить объект:

Создаем пользователей AD в powershell используя New-ADUser

Создание пользователей в Powershell можно выполнить через команду New-ADUser. Мы рассмотрим как создавать в определенной OU, с паролем, из CSV и с другими параметрами.

Если мы наберем просто команду, то нам предложат ввести логин и наш пользователь создастся отключенным в папке User:

Логин (Name) — это единственный обязательный параметр для заполнения. Оно соответствует полю, которое выделено на рисунке ниже:

Навигация по посту

Создание пользователя в Powershell с параметрами New-ADUser

У командлета есть много параметров (больше 60) и мы рассмотрим основные из них. Для того что бы увидеть все параметры выполните следующее:

Читайте также:  Невозможно открыть используя встроенную учетную windows 10

Или если хотите найти конкретный параметр (в моем случае все где есть Name):

Обычно нам нужно создать учетку AD с паролем, именем и фамилией и она должна быть активна. Для создания пользователя AD с паролем используется другой командлет Powershell. Я объявлю пароль в переменной, но можно сразу и при создании пользователя:

Затем создадим пользователя:

  • Name — логин
  • GivenName — имя
  • SurName — фамилия
  • AccountPassword — пароль, который мы объявили в переменной
  • Enbaled — делает пользователя активным
  • UserPrincipleName — соответствует полю выделенному на рисунке ниже

Создание пользователя в Powershell в определенной OU используя New-ADUser Path

Для добавления пользователя в другой OU нужно использовать ключ Path. На примере домена domain.local и организационной единице Moscow путь будет выглядеть так:

Причем может появится ошибка:
new-aduser объект каталога не найден
Т.к. в пути вместо OU указывают контейнер CN.

Или если в нас вложенные OU:

Создание пользователей AD из CSV в Powershell New-ADUser

Я создал в Excel такой файл и сохранил как CSV:

Для того что бы импортировать файл есть командлет Import-Csv. Нужно обратить внимание какой разделитель (делимитер) в файле и у вас в системе. Увидеть это можно так:

Если есть отличия, то тогда в команде импорта нужно добавить ключ ‘-Delimiter’ и указать тот, который в файле. Отличия будут, например, если файл был создан в русской локализации, а импорт идет на сервере с английской.

Импорт и создание пользователей делается так:

Сложение в Path сделано для демонстрации такой возможности и не является обязательным.

У меня так же была ошибка:

  • new-aduser указанное имя не является корректным именем пользователя
  • New-ADUser : The object name has bad syntax
  • New-ADUser : Directory object not found

Причины возникновения не совсем ясны. Хоть ошибка и указывала на начало командлета New-AdUser, но проблема была в Path. Из рекомендаций были убрать в CSV файле пустые строки, проверить, что у нас нет путаницы с кавычками ( что мы не используем » ‘ в одном объекте), а так же вынести значение Path вне цикла в переменную. Мне помогло, как я понял, замена кавычек в ключе, экранирование скобками и удаление пробелов в этом ключе.

Само собой мы можем в Csv файле создать больше колонок. Например мы можем там создать и пароль, что бы у всех пользователей он был разный, но нужно будет обязательно сконвертировать его через ConvertTo-SecureString.

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

Скрипт PowerShell для импорта в лес Active Directory и создания файла с пользователями


Приветствую, Хабражители. Cегодня я хотел бы с Вами поделиться скриптом для импорта пользователей в Active Directory. Мой начальник сказал, что пора поднимать домен, а так же добавить в него около 2000 пользователей. Домен до этого я делал, но вот с импортом пользователей пришлось повозиться, так как делал это впервые. В данном посте я хотел бы рассказать как я это реализовывал

Сначала установил и настроил WS 2012R2 как DC и после этого встал вопрос как добавлять пользователей в него. Список сотрудников у меня был в xls файле и тогда я решил, чтобы не забивать пользователей вручную, оптимизировать это с помощью PowerShell.

В интернете много примеров, но они мало чем подходили для моего решения, некоторые были кусками кода, другие вовсе не работали с WS2012R2, а третьи добавляли пользователей в определенные каталоги, а мне необходимо было раскидать пользователей в более чем 70 каталогов. Так же встала задача как сделать CSV — файл для PowerShell в соответствии с его стандартами.

Читайте также:  Майкрософт образ диска windows 10
Сотрудник Подразделение Должность
Петров Владимир Иванович Бухгалтерия Помощник бухгалтера
Иванов Иван Иванович ДИТ Программист

В первую очередь необходимо разделить ФИО на разные столбцы и оказалось, что в MS Excel 2013 есть достаточно интересный инструмент для этого под названием «Текст по столбцам» который находится во вкладке ДАННЫЕ.

После этого был принят формат логинов для пользователей и было принято решение, что это будут первые буквы от имени и отчества и после нижнего подчеркивания полностью фамилия (например: aa_petrov). Для этого пришлось транслитерировать их с помощью VB-скрипта.

А также добавлена функция для генерации данных логинов:

Пароли были сгенерированны с помощью фразы и набора случайных символов:

После этого сохранил файл в .csv с 6 заголовками Login; Password; LastName; FirstName; MiddleName; OU; JobTitle и изменил кодировку файла в Unicode, так как с ANSI часто бывают проблемы.

Затем написал следующий скрипт PS:

Данный скрипт позволяет раскидать пользователей по своим каталогам, а тех у кого их нет отправить в каталог Other.

Спасибо за внимание.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Powershell. Как создать локальных пользователей и добавить их в группы.

Довольно часто возникает необходимость создавать локальных пользователей на компьютерах и добавлять их в различные группы(в основном, конечно, в группу «Пользователи удаленного рабочего стола»).

Хорошо, если это один-два пользователя, тогда несложно это сделать и руками. Но если пользователей пара десятков, процесс превращается в нудный и малоэффективный.

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

Для добавления локальных пользователей пользователей на компьютер и добавление их в группу нам понадобится список пользователей в формате .csv(с указанием необходимых данных о пользователях) и небольшой скрипт Powershell. В данном случае скрипт создает пользователя, задает имя, полное имя и описание пользователя, а также добавляет его в нужные группы. При необходимости можно изменить(дополнить) файл и скрипт под свои задачи.

Файл csv можно создать в Excel с последующим сохранением в формате csv

либо создать текстовый файл в обычном блокноте и сохранить его с расширением .csv

Вот так выглядит файл в блокноте:

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

Ну а вот и сам скрипт Powershell, с помощью которого вы сможете создать пользователей и добавить их в группы быстро и просто(не забудьте запустить Powershell с правами Администратора).

Управляем локальными пользователями с помощью PowerShell

Для работы с доменными пользователями в PowerShell уже давно существует множество командлетов, но если вам потребуется управлять локальными пользователями, то здесь основным инструментом по прежнему остается графическая оснастка (lusrmgr.msc) и старая добрая утилита командной строки net. Тем не менее, в PowerShell все же есть возможность для управления локальными пользователями на компьютерах, не входящих в домен.

Для этого можно воспользоваться интерфейсом ADSI (Active Directory Services Interface), который может применяться как для работы с Active Directory, так и с отдельно стоящими компьютерами.

Рассмотрим несколько наиболее актуальных ситуаций при работе с локальными пользователями

Создание пользователя

Первое, что необходимо сделать с пользователем — это создать его учетную запись. Для этого сначала получаем объект компьютера и помещаем его в переменную:

Читайте также:  Macbook pro a1278 драйвера для windows

Затем с помощью метода Create создаем пользователя с именем LocalAdmin:

$user = $computer.Create(″User″, ″LocalAdmin″)

Устанавливаем флажок для того, чтобы пользователь сменил пароль при входе:

Задаем начальный пароль:

И добавляем описание в поле «Description»:

$user.Put(″Description″, ″Local administrator″)

Чтобы все сделанные изменения были применены, необходимо выполнить команду:

Для проверки можно вывести список пользователей командой:

$computer.Children | where <$_.Class -eq ″user″>| ft name, description -auto

Ну или посмотреть в графической оснастке.

А теперь представим, что требуется установить флаги «User cannot change password» и\или «Password never expired». Эти настройки хранятся в свойстве пользователя UserFlags, которое представляет из себя битовую маску. Для вычисления необходимого значения используется операция -bor (побитовое ИЛИ), например так мы установим флаг «Password never expired»:

$flag = $user.UserFlags.Value -bor 0x10000
$user.Put(″userflags″,$flag)
$user.SetInfo()

Примечание. Значения, необходимые для установки различных флагов, можно посмотреть на странице http://msdn.microsoft.com/en-us/library/aa772300(VS.85).aspx

Надо иметь в виду, что при установке одного флага остальные сбрасываются. К примеру, если установить флаг «User cannot change password» (значение 0x40), то флаг «Password never expired» будет снят. Для того, чтобы поставить оба флага, необходимо суммировать их значения, например так:

$flag = $user.UserFlags.Value -bor 0x10040
$user.Put(″userflags″,$flag)
$user.SetInfo()

Также необходимо помнить, что флаги «User cannot change password» и «Password never expired» несовместимы с «User must change password at next logon», поэтому при установке любого из них он снимается. Это очень наглядно видно в графической оснастке.

И еще одна операция, которая обычно производится при создании пользователя — добавление его в группу. Для примера добавим нашего пользователя в группу локальных администраторов:

[adsi]$group = ″WinNT://SRV1/Administrators, group″
$group.Add($user.Path)

Проверить содержимое группы можно такой несложной 🙂 командой:

$members = @($group.psbase.Invoke(″Members″))
$members | foreach

Редактирование свойств пользователя

Довольно часто встречается ситуация, когда пользователь уже имеется и его надо отредактировать — сменить пароль, добавить в группу и т.п. Первым делом помещаем объект компьютера в переменную и смотрим список локальных пользователей:

[adsi]$computer = ″WinNT://SRV1″
$computer.Children | where <$_.Class -eq ″user″>| ft name, description -auto

Предположим, требуется сбросить\сменить пароль для пользователя LocalAdmin. Помещаем его в переменную:

Устанавливаем новый пароль:

Задаем смену пароля при следующем входе:

и сохраняем изменения:

А теперь передвинем его из группы локальных администраторов (Administrators) в группу пользователей удаленного рабочего стола (Remote Desctop Users). Для этого помещаем обе группы в переменные:

[adsi]$admins = ″WinNT://SRV1/Administrators,group″
[adsi]$rdpusers = ″WinNT://SRV1/Remote Desktop Users,group″

Затем, используя метод Remove, удаляем пользователя из одной группы:

и добавляем в другую с помощью метода Add:

Отключение\удаление пользователя

Ну и конечно может потребоваться отключить или удалить учетную запись пользователя. За отключение отвечает флаг «Account is disabled», который также хранится в UserFlags. Сначала помещаем в переменную значение, соответствующее отключенной записи:

Затем с помощью операции -band (побитовое И) проверяем, включена ли учетная запись. Результат выводим в логическом (boolean) виде:

($user.UserFlags.Value -band $disabled) -as [bool]

Если команда вернула False, значит учетная запись активна. Задаем новое значение флага:

$flag = $user.UserFlags.Value -bor $disabled

И изменяем текущее значение:

$user.Put(″userflags″, $flag)
$user.SetInfo()

Обновляем кэш и еще раз проверяем, включена ли учетная запись:

$user.RefreshCache()
($user.UserFlags.Value -band $disabled) -as [bool]

Теперь команда возвращает True, что означает успешное выключение. Ну а для обратного включения требуются ровно те-же действия, только вместо операции -bor (включающее ИЛИ) используется операция -bxor (исключающее ИЛИ):

$disabled = 0x0002
$flag = $user.UserFlags.Value -bxor $disabled
$user.Put(″userflags″, $flag)
$user.SetInfo()

Ну и для окончательного удаления пользователя воспользуемся методом Delete:

[adsi]$computer = ″WinNT://SRV1″
$computer.Delete(″user″,$user.Name.Value)

И проверим результат командой:
$computer.Children | where <$_.Class -eq ″user″>| ft name, description -auto

На этом у меня все о PowerShell и локальных пользователях. Если это вам покажется недостаточным, то более подробно свойства и методы локальных пользователей описаны на MSDN.

Оцените статью