Содержание статьи:
В данной статье мы рассмотрим решение самых распространенных задач связанных с локальными учётными записями пользователей ОС Windows, средствами PowerShell, а именно мы:
- Создадим локальную учётную запись пользователя.
- Рассмотрим смену/задание пароля локальной учётной записи.
- Добавим пользователя в группу.[Вообще вам может понадобиться внести пользователя в любую другую группу, но мы рассмотрим добавление пользователя в группу "Администраторы", тем самым сделаем нашего пользователя локальным администратором]
Так же, попутно будем рассматривать не столь важные, но попадающие к нам во внимание, опции.
Весь материал представленный в данной статье протестирован на ОС Windows 10 и Windows Server 2016.
Сразу скажу что с PowerShell я дел никогда не имел, если я что-то делаю не так, то подскажите в комментариях, как надо)
Приступаем!
Для начала нам необходимо запустить PowerShell с правами администратора, для этого выполните действия -> Заходим в "Выполнить"[Win+R] -> Вписываем - powershell -> Нажимаем на клавиатуре сочетание клавиш "CTRL"+"SHIFT"+"ENTER". Всё!
В PowerShell за работу с локальными пользователями и группами отвечает модуль LocalAccounts.
В модуль LocalAccounts входит 15 командлетов. Для вывода полного списка командлетов воспользуемся командой(Рис.1):
Get-Command -Module Microsoft.PowerShell.LocalAccounts

Описание командлетов модуля 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 - Изменить локальную учётную запись пользователя.
Для того чтобы почитать помощь по командлетам воспользуйтесь командой:
Get-Help ИМЯ_КОМАНДЛЕТА
К примеру, так мы выведем помощь по командлету New-LocalUser(Рис.2):
Get-Help New-LocalUser

Всё, переходим к работе с локальными учётными записями.
1. - Вывод списка существующих в системе учётных записей
Для того чтобы посмотреть список, существующих в системе учетных записей пользователей, нужно ввести команду - Get-LocalUser(Рис.3):
Get-LocalUser
Как видим в моей системе существует четыре учётных записи, одна из них - UserFirstdeer - включена[активна][Enabled = True], а три другие выключены[неактивны][Enabled = False], так же в третьем столбце мы видим описание[Description] учётных записей.

2. - Создание учётной записи | Свойства учётной записи
Для того чтобы создать локальную учётную запись нам понадобится командлет - New-LocalUser.
Посмотрим параметры командлета New-LocalUser.
Обязательные параметры.
Вы либо указываете так:
- [-Name "ИМЯ"] - Имя учётной записи пользователя.
- [-NoPassword] - Создать учётную запись без пароля.
Либо так:
- [-Name "ИМЯ"] - Имя учётной записи пользователя.
- [-Password] - Создать учётную запись c паролем.[На практике этот параметр можно и не указывать, PowerShell сам предложит нам ввести пароль]
Необязательные параметры:
- [-FullName "ПОЛНОЕ_ИМЯ"] - Добавить полное имя пользователя.
- [-Description "ОПИСАНИЕ"] - Добавить описание учётной записи.
- [-AccountExpires ДАТА] - Ограничить срок действия учётной записи. Значение ДАТА - указание даты, до которой будет активна учётная запись. Дата указывается в формате ДД.ММ.ГГ. Год может указываться четырьмя [2019] или двумя[19] цифрами. Элементы даты разделяются точкой[.] или слэшем [/] без пробелов.
- [-AccountNeverExpires] - Срок действия учётной записи неограничен.
- [-Disabled] - Создать учётную запись выключенной[неактивной].
- [-UserMayChangePassword { $True / $False }] - $True - Разрешить смену пароля пользователем. / $False - Запретить смену пароля пользователем.
- [-Confirm] - Запрашивает подтверждение ваших действия перед запуском командлета.
- [-WhatIf] - Показывает, что произойдет, если командлет запустится. Командлет не выполняется.
- [-Verbose] - Подробности при выполнении командлета.
Отдельно разберём параметр [-PasswordNeverExpires] - Доступен при наличии пароля.
- [-PasswordNeverExpires] или [-PasswordNeverExpires $True] - Срок действия пароля неограничен.
- [-PasswordNeverExpires $False] - Срок действия пароля ограничен[Локальными политиками... По умолчанию - 42 дня]
2.1. - Создание учётной записи без пароля
Для начала покажу, как создать учётную запись без пароля(Рис.4)
New-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -NoPassword
В моём случае так:
New-LocalUser -Name "firstdeer" -NoPassword

Видим в выводе, что учётная запись создалась, и создалась она уже включённой[активной][Enabled = True].
Сразу же глянем её свойства, для того чтобы понимать, в каком виде создаётся учётная запись по умолчанию:
Для просмотра свойств учётной записи воспользуйтесь командой:
Get-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" | Select-Object *
В моём случае, я смотрю свойства пользователя - firstdeer(Рис.5):
Get-LocalUser -Name "firstdeer" | Select-Object *

Как можем видеть, что по умолчанию, учётная запись активна, срок действия учётной записи не истечёт никогда, и пользователь сам сможет задать пароль:
- AccountExpires: [Дата истечения срока действия учётной записи. Если ничего нет, значит не истекает.]
- Description: [Описание]
- Enabled: True [True - Учётная запись включена, False - Учётная запись выключена]
- FullName: [Полное имя пользователя]
- PasswordChangeableDate: [Дата последней смены пароля]
- PasswordExpires: [Дата окончания срока действия пароля]
- UserMayChangePassword: True [True - пользователь может менять свой пароль, False - пользователь не может менять свой пароль]
- PasswordRequired: False [True - для учётной записи требуется пароль, False - для учётной записи не требуется пароль]
- PasswordLastSet: [Тоже дата последней смены пароля]
- LastLogon: [Дата последнего входа в учётную запись]
- Name: firstdeer [Имя пользователя]
- SID: S-1-5-21-3946805627-2500038962-3931721193-1006 [Идентификатор безопасности]
- PrincipalSource: Local [Как правильно перевести? :c ]
- ObjectClass: Пользователь [Данный объект является пользователем]
2.2. - Создание учётной записи с паролем
Далее я приведу два способа создания учётной записи с паролем:
Первый способ.
Для создания учётной записи воспользуйтесь командой:
New-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ"
В моём случае так:(Рис.6):
New-LocalUser -Name "firstdeer"
После ввода команды нам будет предложено ввести пароль.[Password: *** - Вводим или оставляем без пароля]
Учётная запись создана -> глянем её свойства:
Get-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" | Select-Object *

Как можем видеть, что по умолчанию, учётная запись активна, срок действия учётной записи не истечёт никогда, пользователь сам может сменить пароль, и пароль действителен 42 дня.
- AccountExpires: [Дата истечения срока действия учётной записи. Если ничего нет, значит не истекает. мб ещё указана дата истечения срока действия]
- Description: [Описание]
- Enabled: True [True - Учётная запись включена, False - Учётная запись выключена]
- FullName: [Полное имя пользователя]
- PasswordChangeableDate: 06.01.2019 3:14:47 [Дата последней смены пароля]
- PasswordExpires: 17.02.2019 3:14:47 [Дата окончания срока действия пароля]
- UserMayChangePassword: True [True - пользователь может менять свой пароль, False - пользователь не может менять свой пароль]
- PasswordRequired: False [True - для учётной записи требуется пароль, False - для учётной записи не требуется пароль]
- PasswordLastSet: 06.01.2019 3:14:47 [Тоже дата последней смены пароля]
- LastLogon: [Дата последнего входа в учётную запись]
- Name: firstdeer [Имя пользователя]
- SID: S-1-5-21-3946805627-2500038962-3931721193-1007 [Идентификатор безопасности]
- PrincipalSource: Local [Как правильно перевести? :c ]
- ObjectClass: Пользователь [Данный объект является пользователем]
Второй способ:
Указание пароля в команде. [По всей видимости, этот способ применяется для скриптов, чтобы учётная запись создавалась без участия пользователя]
Указать пароль в открытом виде, как это делалось в CMD, нельзя.
Для начала нужно создать переменную $UserPassword и присвоить ей наш пароль сконвертированный в безопасную строку, командой[мб слова неправильные]:
$UserPassword = ConvertTo-SecureString "ПАРОЛЬ" -AsPlainText -Force
Далее создаём учётную запись, указав пароль - переменной $UserPassword [Логично было бы сразу при создании пользователя указать параметр -PasswordNeverExpires - срок действия пароля неограничен, но я так делать не буду]:
New-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -Password $UserPassword -PasswordNeverExpires
В моём случае, я создаю пользователя - firstdeer.(Рис.7):
New-LocalUser -Name "firstdeer" -Password $UserPassword
Для просмотра свойств учётной записи воспользуйтесь командой:
Get-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" | Select-Object *

Свойства уже были описаны ранее, останавливаться здесь на этом не будем.
3. - Удаление учётной записи
Remove-LocalUser - Удалить учётную запись пользователя:
Remove-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ"
4. - Сменить/Задать пароль учётной записи
Для того чтобы сменить или задать пароль учётной записи пользователя воспользуйтесь командами:
$UserPassword = Read-Host –AsSecureString
После ввода команды, мы вводим пароль, а далее воспользуемся командлетом Set-LocalUser [изменить локальную учётную запись] с параметром -Password.
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -Password $UserPassword
В моём случае, я меняю пароль пользователю - firstdeer.[указал -Verbose для вывода сообщения "ПОДРОБНО:..."](Рис.8):
Set-LocalUser -Name "firstdeer" -Password $UserPassword -Verbose

Вот и всё, пароль сменён.
5. - Изменение учётной записи
Для изменения учётной записи нам понадобится командлет Set-LocalUser [изменить локальную учётную запись пользователя]:
5.1. - Описание
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -Description "ОПИСАНИЕ"
5.2. - Полное имя
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -FullName "ПОЛНОЕ_ИМЯ"
5.3. - Параметры пароля
-PasswordNeverExpires { $True | $False } - Срок действия пароля.
Срок действия пароля неограничен:
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" –PasswordNeverExpires
Ограничить срок действия пароля локальными политиками:
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" –PasswordNeverExpires $False
-UserMayChangePassword { $True | $False } - Разрешить/Запретить пользователю менять пароль.
Разрешить пользователю менять свой пароль:
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -UserMayChangePassword $True
Запретить пользователю менять свой пароль:
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -UserMayChangePassword $False
5.4. - Срок действия учётной записи
-AccountExpires ДАТА - Ограничить срок действия учётной записи. Значение ДАТА - указание даты, до которой будет активна учётная запись. Дата указывается в формате ДД.ММ.ГГ. Год может указываться четырьмя [2019] или двумя[19] цифрами. Элементы даты разделяются точкой[.] или слэшем [/] без пробелов.
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -AccountExpires ДД.ММ.ГГ
-AccountNeverExpires - Срок действия учётной записи неограничен:
Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -AccountNeverExpires
5.5. - Выключить/Включить учётную запись
По умолчанию, только что созданная учётная запись - активная[Включена]. При необходимости её можно выключить/включить.
Выключить[сделать не активной] её можно командой:
Disable-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ"
Включить[сделать активной]:
Enable-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ"
6. - Добавление пользователя в группу "Администраторы"
Напоминаю - При создании учётной записи через PowerShell, она не будет состоять ни в одной из локальных групп[Пользователи, Администраторы...], а значит пока мы не добавили её в группу, толку от неё нет. Короче не забываем добавить пользователя в группу 🙂
Здесь я буду добавлять пользователя в группу "Администраторы", тем самым сделаю его локальным администратором. Вы же конечно можете добавить пользователя в группу "Пользователи" если авторизовываться вам нужно, а быть локальным администратором - не нужно.
Первым делом нужно посмотреть точное название группы, делается это при помощи командлета отображающего все локальные группы - Get-LocalGroup:
Get-LocalGroup
Это действие обязательное, так как название группы может быть, как на русском так и на английском языке и команда для русского языка не сработает на английском и наоборот :c
И так я вижу, что название групп у меня на русском, и нужная мне группа называется - "Администраторы".(Рис.9)

Теперь нужно посмотреть членов этой группы[Кто находится в списке], командлет - Get-LocalGroupMember(Рис.10):
Get-LocalGroupMember -Group "Администраторы"
Как видим в группе "Администраторы" числится две учётных записи - "UserFirstdeer" и "Администратор".

Теперь нужно добавить нашего пользователя в группу, для этого воспользуемся командлетом - Add-LocalGroupMember:
Add-LocalGroupMember -Group "ИМЯ_ГРУППЫ" -Member "ПОЛЬЗОВАТЕЛЬ"
Для того чтобы удалить пользователя из группы воспользуемся командлетом - Remove-LocalGroupMember:
Remove-LocalGroupMember -Group "ИМЯ_ГРУППЫ" -Member "ПОЛЬЗОВАТЕЛЬ"
В моём случае так(Рис.10):
Add-LocalGroupMember -Group "Администраторы" -Member "firstdeer"

Всё ок! Наш пользователь в группе. Теперь пользователь может авторизовываться в системе.
Как мы делали то же самое в графическом интерфейсе и в командной строке - Работа с локальной учётной записью в Windows [GUI/CMD]
У меня всё!
Была ли вам полезна статья? Есть возможность поддержать проект.
Комментарии