Работа с локальной учётной записью в Windows [Powershell - LocalAccounts]

В данной статье мы рассмотрим решение самых распространенных задач связанных с локальными учётными записями пользователей ОС 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
Рис.1 - Полный список командлетов модуля 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
Помощь по командлету New-LocalUser.
Рис.2 - Помощь по командлету New-LocalUser.

Всё, переходим к работе с локальными учётными записями.


1. - Вывод списка существующих в системе учётных записей

Для того чтобы посмотреть список, существующих в системе учетных записей пользователей, нужно ввести команду - Get-LocalUser(Рис.3):

Get-LocalUser

Как видим в моей системе существует четыре учётных записи, одна из них - UserFirstdeer включена[активна][Enabled = True], а три другие выключены[неактивны][Enabled = False], так же в третьем столбце мы видим описание[Description] учётных записей.

Вывод существующих в системе учётных записей.
Рис.3 - Вывод существующих в системе учётных записей.

2. - Создание учётной записи | Свойства учётной записи

Сразу стоит сказать, что при создании учётной записи через PowerShell, она не будет состоять ни в одной из локальных групп[Пользователи, Администраторы...], а значит пока мы не добавили её в группу, толку от неё нет. Короче, не забываем добавить пользователя в группу - 6. - Добавление пользователя в группу "Администраторы" 🙂

Для того чтобы создать локальную учётную запись нам понадобится командлет - 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
Создание локальной учётной записи без пароля.
Рис.4 - Создание локальной учётной записи без пароля.

Видим в выводе, что учётная запись создалась, и создалась она уже включённой[активной][Enabled = True].

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

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

Get-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" | Select-Object *

В моём случае, я смотрю свойства пользователя - firstdeer(Рис.5):

Get-LocalUser -Name "firstdeer" | Select-Object *
Просмотр свойств учётной записи.
Рис.5 - Просмотр свойств учётной записи.

Как можем видеть, что по умолчанию, учётная запись активна, срок действия учётной записи не истечёт никогда, и пользователь сам сможет задать пароль:

  • 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 *
Создание локальной учётной записи с паролем. Просмотр свойств.
Рис.6 - Создание локальной учётной записи с паролем. Просмотр свойств.

Как можем видеть, что по умолчанию, учётная запись активна, срок действия учётной записи не истечёт никогда, пользователь сам может сменить пароль, и пароль действителен 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 = Read-Host –AsSecureString ], но тогда пароль нужно будет вводить вручную... не будем тут останавливаться на этом, а попробуем этот способ в пункте - 4. - Сменить/Задать пароль учётной записи

Далее создаём учётную запись, указав пароль - переменной $UserPassword [Логично было бы сразу при создании пользователя указать параметр -PasswordNeverExpires - срок действия пароля неограничен, но я так делать не буду]:

New-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -Password $UserPassword -PasswordNeverExpires

В моём случае, я создаю пользователя - firstdeer.(Рис.7):

New-LocalUser -Name "firstdeer" -Password $UserPassword

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

Get-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" | Select-Object *
Указание пароля в безопасной строке, создание пользователя, просмотр свойств.
Рис.7 - Указание пароля в безопасной строке, создание пользователя, просмотр свойств.

Свойства уже были описаны ранее, останавливаться здесь на этом не будем.


3. - Удаление учётной записи

Remove-LocalUser - Удалить учётную запись пользователя:

Remove-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ"

4. - Сменить/Задать пароль учётной записи

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

Так же как и при создании учётной записи с паролем, для начала нужно присвоить переменной $UserPassword значение[наш пароль] введенное в безопасной строке. Здесь для примера, мы использовали другой способ ввода пароля, но вы можете использовать и тот, который показан в пункте - 2.2 - Создание учётной записи с паролем
$UserPassword = Read-Host –AsSecureString

После ввода команды, мы вводим пароль, а далее воспользуемся командлетом Set-LocalUser [изменить локальную учётную запись] с параметром -Password.

Set-LocalUser -Name "ПОЛЬЗОВАТЕЛЬ" -Password $UserPassword

В моём случае, я меняю пароль пользователю - firstdeer.[указал -Verbose для вывода сообщения "ПОДРОБНО:..."](Рис.8):

Set-LocalUser -Name "firstdeer" -Password $UserPassword -Verbose
Смена пароля пользователю.
Рис.8 - Смена пароля пользователю.

Вот и всё, пароль сменён.


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)

Рис.9 - Список локальных групп.

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

Get-LocalGroupMember -Group "Администраторы"

Как видим в группе "Администраторы" числится две учётных записи -  "UserFirstdeer" и "Администратор".

Просмотр членов локальной группы.
Рис.10 - Просмотр членов локальной группы.

Теперь нужно добавить нашего пользователя в группу, для этого воспользуемся командлетом - Add-LocalGroupMember:

Add-LocalGroupMember -Group "ИМЯ_ГРУППЫ" -Member "ПОЛЬЗОВАТЕЛЬ"

Для того чтобы удалить пользователя из группы воспользуемся командлетом - Remove-LocalGroupMember:

Remove-LocalGroupMember -Group "ИМЯ_ГРУППЫ" -Member "ПОЛЬЗОВАТЕЛЬ"

В моём случае так(Рис.10):

Add-LocalGroupMember -Group "Администраторы" -Member "firstdeer"
Добавление пользователя в группу.
Рис.11 - Добавление пользователя в группу.

Всё ок! Наш пользователь в группе. Теперь пользователь может авторизовываться в системе.


Как мы делали то же самое в графическом интерфейсе и в командной строке - Работа с локальной учётной записью в Windows [GUI/CMD]


У меня всё!

Поделиться публикацией

Была ли вам полезна статья? Есть возможность поддержать проект.

Комментарии

avatar
  Подписаться на комментарии  
Уведомление о