- Создаем пользователей AD в powershell используя New-ADUser
- Создание пользователя в Powershell с параметрами New-ADUser
- Создание пользователя в Powershell в определенной OU используя New-ADUser Path
- Создание пользователей AD из CSV в Powershell New-ADUser
- Создание пользователя из командной строки
- Управление локальными пользователями и группами с помощью PowerShell
- Модуль LocalAccounts
- Управление локальными пользователями Windows с помощью PowerShell
- Управление локальными группам Windows с помощью PowerShell
Создаем пользователей 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, который покажет результаты выполнения команды, но не выполнит ее физически.
Создание пользователя из командной строки
Давным-давно прошли те времена, когда при установке Windows приходилось использовать загрузочную дискету. Если бы не эксперименты с переустановкой Windows (помнится восторг от инсталляции Millenium вместо 98) и частое использование CMD и ее утилит, то желание узнать что-то больше, что-то, что лежит за гранью, кануло бы в небытие.
Как правило, в то время основным функционалом (помнится еще и книгу по информатике купил) было использование стандартных утилит, типа dir, copy или format Нынче времена другие, и пожалуй даже школьник средних классов сможет легко обогнать учителя по информатике, если у преподавателя нет интернета, а у школьника есть, плюс, присутствует огромное желание познать что-то новенькое. К великому сожалению, часто приходится видеть этих школьников по телевизору, в новостях с громким название «Школьники украли 5000 долларов с электронных кошельков» или что-то подобное.
Пожалуй, каждый пользователей персонального компьютера с операционной системой Windows хотя бы раз создавал аккаунт, или видел, как это делается. И, пожалуй, многие гордятся, что у них учетная запись с правами Администратора, ну а если они еще и пароль поставят… то, пожалуй, чувствуют себя королем. Если при использовании Панели управления все довольно просто – создал нового юнита, сделал выбора типа «администратор», установил пароль и все, можно спокойно ложиться спать. Однако, если попробовать сделать тоже самое, то есть, создать пользователя из командной строки , то пред нашим взором возникнут много неожиданных и интересных моментов . И так, для того, чтобы добавить или удалить пользователя из командной строки, применяется команда net use, которая используется совместно с такими параметрами:
- /add – добавление нового аккаунта
- /delete – удаление существующего аккаунта
- /comment – позволяет задать описание, например: «для сына» или «только для жены»
- /fullname – тут прописывается полное имя, которое является также отображаемым именем
- /passwordchg : – атрибут yes предоставляет пользователям право изменять в будущем свой пароль (стоит по умолчанию), а no – конечно, запрещает производить столь опасные действия
- /passwordreq: – при условии, если установлен атрибут yes, то требуется наличие пароля
- /active: – значение yes – включение учетной записи (стоит по умолчанию), а no – ее отключение, но не удаление!. Если же во время создания отключить учетную_запись, например:
, то она не будет отображаться во время загрузки системы и даже в аплете «Учетные записи пользователей».
Если запустить команду net user без параметров, то можно увидеть, что кроме пользователя, создание которого производилось из командной строки, есть, и… УчетнаяЗапись Администратор и Гость. К сожалению, данная команда не показывает, какая активирована, а какая нет. Стоит помнить, что встроенные системные Учетные_Записи Администратор и Гость нельзя удалить посредством команды net user Администратор /delete. Их можно только отключить:
Стоит помнить, что данные учетные записи могут иметь и другие названия (Administrator, admin…). А теперь самое интересное, если вы счастливый обладатель XP, ну например SP3 (полагаю, что многое зависит еще и от сборки), то при установке операционной системы, Учетная_Запись «Администратор» остается включенной, более, она не отображается при входе в систему. В интернете есть видео под громким названием «Обходим пароль администратора», так вот, там при входе в систему (при появлении окна приветствия) достаточно было ввести комбинацию CTRL+Alt+DEL (дважды), в появившемся окне ввести Administrator и Enter, вы попадете в систему да еще и с правами администратора! Понятно, что если учетная запись не имеет пароля, и активна, то ничто не мешает попасть в середину. Для любознательных, можно открыть Панель управления/ Администрирование/ Управление компьютером и аналогично посмотреть, какие учетные записи есть и какие активны. Но, если вы счастливый обладатель Семерки, то тут трюк с CTRL+Alt+DEL уже не пройдет, поскольку Администратор отключен.
Но, создав пользователя из командной строки посредством утилиты net user, он автоматически будет зачислен в группу пользователи, что не есть хорошо, особенно, если мы хотим под этим аккаунтом творить свои темные делишки.
И так, следующая команда net localgroup позволяет просматривать имеющиеся в системе группы и добавить нового пользователя из CMD (командной строки) в ту или иную группу. Проделав аналогичные действия, мы увидим, что групп не две как предполагалось (Администраторы и Гости), а значительно больше.
Ладно, добавим NewUser в группу администраторы:
После выполнения данной команды наш новоиспеченный NewUser будет состоять в двух группах – Администраторы и пользователи (при желании можно его и в остальные группы добавить). Удаление пользователя из группы происходит с использованием параметра /delet. Например:
Тут стоит обратить внимание на Семерку, тут есть порой очень раздражающий механизм UAC – контроль учетных записей. При попытке что-то установить или изменить в системе, он предлагает вариант разрешить или нет. Иногда этот механизм не позволяет установить игру или программный пакет (стоит помнить, что некоторые функции CMD работают лишь в том случае, например, создание пользователя из командной строки, если ее запустить от имени администратора), в таком случае можно попробовать активировать встроенную системную запись Администратор и уже под ней произвести нужные действия. НО. После, ее надо или снова отключить, или же поставить пароль, от греха подальше.
Спасибо за внимание. Автор блога Владимир Баталий
Управление локальными пользователями и группами с помощью PowerShell
Относительно недавно Microsoft добавила в Windows стандартный PowerShell модуль для управления локальными пользователями и группами под названием Microsoft.PowerShell.LocalAccounts. Ранее этот командлет нужно было качать и импортировать в PowerShell отдельно. В Windows Server 2016 и Windows 10 модуль LocalAccounts теперь доступен по умолчанию, т.к. он входит в состав PowerShell 5.1. В более ранние версии Windows для использования модуля управления локальными аккаунтами нужно установить Windows Management Framework 5.1.
Модуль LocalAccounts
Всего в модуль входит 15 командлетов. Полный список командлетов в модуле LocalAccounts можно вывести так:
Get-Command -Module Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember – добавить пользователя в локальную группу
- Disable-LocalUser – отключить локальную учетную запись
- Enable-LocalUser – включить учетную запись (разблокировать)
- Get-LocalGroup – получить информацию о локальной группе
- Get-LocalGroupMember – получить список пользователей в локальной группе
- Get-LocalUser – получить информацию о локальном пользователе
- New-LocalGroup – создать новую локальную группы
- New-LocalUser – создать пользователя
- Remove-LocalGroup – удалить группу
- Remove-LocalGroupMember – удалить члена из группы
- Remove-LocalUser – удалить локального пользователя
- Rename-LocalGroup – переименовать группу
- Rename-LocalUser – переименовать пользователя
- Set-LocalGroup – изменить группу
- Set-LocalUser – изменить пользователя
Далее рассмотрим несколько типовых задач по управлению локальными пользователями и группами на компьютере с Windows 10 при помощи PowerShell командлетов из состава модуля LocalAccounts.
Управление локальными пользователями Windows с помощью PowerShell
Выведем список имеющихся на компьютере локальных пользователей Windows:
Как вы видите, на компьютере имеется 7 локальных учетных записей, 3 из которых отключены (Enabled=False).
Чтобы вывести все свойства конкретной локальной учетной записи (аналог комадлета для получения иформации о пользователях из AD — Get-ADUser), выполните:
Get-LocalUser -Name ‘root’ | Select-Object *
AccountExpires :
Description :
Enabled : True
FullName :
PasswordChangeableDate : 4/23/2018 11:23:48 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 4/22/2018 11:23:48 PM
LastLogon : 7/15/2018 9:04:32 PM
Name : root
SID : S-1-5-21-3650440056-3766451173-3310994491-1001
PrincipalSource : Local
ObjectClass : User
Чтобы получить конкретный атрибут пользователя, например, время последней смены пароля, выполните:
Get-LocalUser -Name ‘root’ | Select-Object PasswordLastSet
Создадим нового локального пользователя с помощью командлета New-LocalUser. Данный командлет позволяет создать следующие типы учетных записей:
- Локальные учетных записи Windows
- Учетные записи Microsoft
- Учетные записи Azure AD
При создании учётной записи пользователя с помощью New-LocalUser нельзя указывать ее пароль в качестве аргумента Password в открытом виде. Предварительно пароль нужно сконвертировать в безопасную строку, запросив пароль интерактивно:
$UserPassword = Read-Host –AsSecureString
Или указав пароль непосредственно в консоли PoSh:
$UserPassword = ConvertTo-SecureString «Pa$$word!!» -AsPlainText -Force
New-LocalUser «SIvanov» -Password $UserPassword -FullName «Sergey Ivanov» -Description «Local Account dlya udalennogo vhoda»
Чтобы изменить пароль пользователя, воспользуйтесь командой Set-LocalUser (предполагаем, что вы уже преобразовали новый пароль в SecureString):
Set-LocalUser -Name sivanov -Password $UserPassword –Verbose
Чтобы установить флаг «Срок действия пароля пользователя не истекает» («Password never expired»), выполните:
Set-LocalUser -Name sivanov –PasswordNeverExpires $True
Как видите, вам не нужно преобразовывать значение UserAccountControl, как при управлении свойствами учётной записи в AD.
Как вы помните, вы можете авторизоваться в Windows 10 под учетными записями Microsoft. Если нужно создать нового пользователя, связанного с аккаунтом Microsoft, выполните следующую команду (обратите внимание, что пароль аккаунта указывать не нужно, т.к. он хранится в Microsoft).
New-LocalUser -Name «MicrosoftAccount\SomeAccount@outlook.com» -Description «Это учетка в Microsoft»
Для создания локальной учётной записи, которая связана с вашим аккаунтом в Azure AD (например, вы пользуетесь Office 365), выполните команду:
New-LocalUser -Name «AzureAD\Itpro@winitpro.ru» -Description «Это учетка в Azure AD»
Чтобы удалить этого локального пользователя, выполните:
Remove-LocalUser -Name sivanov -Verbose
Управление локальными группам Windows с помощью PowerShell
Теперь выведем список локальных групп на компьютере:
Создадим новую группу:
New-LocalGroup -Name ‘RemoteSupport’ -Description ‘Remote Support Group’
Теперь добавим в новую группу несколько локальных учетных записей и группу локальных администраторов:
Add-LocalGroupMember -Group ‘RemoteSupport’ -Member (‘SIvanov’,’root’, ‘Администраторы’) –Verbose
Если ваш компьютер входит в домен, то вы можете добавить в локальную группы и доменные аккаунты или группы. Для этого их нужно указывать в формате DomainName\user2 или DomainName\’domain admins’.
Также вы можете добавить пользователя в группы с помощью следующего конвейера (добавим пользователя в локальные администраторы):
Get-Localuser -Name ‘sivanov’ | Add-LocalGroupMember -Group ‘Administrators’
Выведем список пользователей в локальной группе:
Get-LocalGroupMember -Group ‘RemoteSupport’
Как вы видите, мы используем только локальные учетные записи (PrincipalSource – Local). Однако здесь могут быть доменные аккаунты (domain), учетные записи Microsoft (MicrosoftAccount) и аккаунты из Azure (AzureAD).
Чтобы вывести список групп, в которых состоит конкретный пользователь, придется перебрать все локальные группы на компьютере:
foreach ($LocalGroup in Get-LocalGroup)
<
if (Get-LocalGroupMember $LocalGroup -Member ‘sivanov’ –ErrorAction SilentlyContinue)
<
$LocalGroup.Name
>
>
Чтобы убрать пользователя из группы, выполните:
Remove-LocalGroupMember -Group ‘RemoteSupport’ –Member ‘sivanov’
Для управления локальными пользователями на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command или Enter-PSSession.
Например, нам нужно собрать список учетных записей в локальной группе на удаленных компьютерах:
$s = new-pssession -computer pc01,pc02,pc03
invoke-command -scriptblock