- Как получить список локальных пользователей в Powershell и создать нового
- Получение списка локальных пользователей в Powershell Get-ADUser
- Создание локального пользователя Powershell и добавление в группу
- Удаление локальных пользователей
- Смена пароля локального администратора в Powershell
- Создаем пользователей AD в powershell используя New-ADUser
- Создание пользователя в Powershell с параметрами New-ADUser
- Создание пользователя в Powershell в определенной OU используя New-ADUser Path
- Создание пользователей AD из CSV в Powershell New-ADUser
- Скрипт PowerShell для импорта в лес Active Directory и создания файла с пользователями
- Powershell. Как создать локальных пользователей и добавить их в группы.
- Управляем локальными пользователями с помощью 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) и мы рассмотрим основные из них. Для того что бы увидеть все параметры выполните следующее:
Или если хотите найти конкретный параметр (в моем случае все где есть 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 в соответствии с его стандартами.
Сотрудник | Подразделение | Должность |
Петров Владимир Иванович | Бухгалтерия | Помощник бухгалтера |
Иванов Иван Иванович | ДИТ | Программист |
В первую очередь необходимо разделить ФИО на разные столбцы и оказалось, что в 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, так и с отдельно стоящими компьютерами.
Рассмотрим несколько наиболее актуальных ситуаций при работе с локальными пользователями
Создание пользователя
Первое, что необходимо сделать с пользователем — это создать его учетную запись. Для этого сначала получаем объект компьютера и помещаем его в переменную:
Затем с помощью метода 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.