Как создать, удалить и изменить локального пользователя или группу с помощью PowerShell

Для управления локальными пользователями и группами в Windows можно использовать встроенный PowerShell модуль Microsoft.PowerShell.LocalAccounts. С помощью этого модуля вы можете создать или удалить локального пользователя, создать новую группу безопасности и добавить в нее пользователей. Этот модуль доступен во всех версиях Windows, начиная с Windows Server 2016 и Windows 10. В предыдущих версиях Windows этот модуль устанавливается вместе с Windows Management Framework 5.1 при обновлении версии PowerShell.

🎓 Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и "под микроскопом" изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Полный список командлетов PowerShell в модуле LocalAccounts можно вывести так:

Get-Command -Module Microsoft.PowerShell.LocalAccounts

Модуль 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 при помощи PowerShell командлетов из модуля LocalAccounts.

Ранее для управления локальными пользователями и группами в Windows использовалась графическая оснастка Local Users and Groups Management ( lusrmgr.msc ) и команды net user , net localgroup .

Создать нового локального пользователя с помощью PowerShell

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

New-LocalUser -Name "TestUser1" -FullName "Test User" -Description "User for tests"

Укажите пароль для нового пользователя:

new-localuser создать локального пользователя в windows с помощью powershell

Длина и сложность пароля пользователя должен соответствовать локальной и доменной политике паролей (если компьютер добавлен в домен AD).

Если вы хотите использовать командлет New-LocalUser для автоматического создания новых локальных пользователей из скриптов PowerShell, пароль можно задать заранее в коде скрипта. Строку с паролем нужно преобразовать в формат Secure String:

$pass = ConvertTo-SecureString "WinitP@ss321!" -AsPlainText -Force
New-LocalUser -Name TestUser2 -Password $password

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

Add-LocalGroupMember -Group Administrators -Member TestUser2

Список локальных пользователей в Windows можно показать на экране входа в систему.

При создании пользователя можно дополнительно использовать следующие параметры:

  • -AccountExpires – дату действия учетной записи, при наступлении которого учетная запись будет автоматически отключена (по умолчанию командлет New-LocalUser создает бессрочную учетную запись)
  • -AccountNeverExpires
  • -Disabled – отключить учетную запись после создания
  • -PasswordNeverExpires – неограниченный срок действия пароля
  • -UserMayNotChangePassword – запретить пользователю менять свой пароль
Для создания нового пользователя в домене AD нужно использовать командлет New-ADUser.

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

Чтобы вывести список всех локальных пользователей Windows на текущем компьютере, выполните:

Get-LocalUser

команда powershell get-localuser: вывести локальных пользователей

Как вы видите, на компьютере имеется 7 локальных учетных записей, 4 из которых отключены (Enabled=False) (в том числе встроенный администратор Windows).

Чтобы вывести все свойства конкретной локальной учетной записи (аналог комадлета для получения информации о пользователях из AD — Get-ADUser), выполните:

Get-LocalUser -Name ‘root’ | Select-Object *

AccountExpires         :
Description            :
Enabled                : True
FullName               :
PasswordChangeableDate : 7/20/2022 12:17:04 PM PasswordExpires : UserMayChangePassword : True PasswordRequired : False PasswordLastSet : 7/20/2022 12:17:04 PM LastLogon : 5/15/2023 2:01:48 AM Name : root SID: S-1-5-21-1823742600-3125382138-2640950260-1001 PrincipalSource : Local ObjectClass : User

Обратите внимание на атрибут PrincipalSource. В нем указан тип аккаунта. Это может быть:

  • Локальный пользователь Windows (PrincipalSource: Local)
  • Учетные записи Microsoft (PrincipalSource: Microsoft Account)
  • Учетные записи Azure AD (PrincipalSource: AzureAD)

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

Get-LocalUser -Name ‘root’ | Select-Object PasswordLastSet

Get-LocalUser вывести информацию о локальном пользователе

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

Set-LocalUser -Name TestUser2 -Password $UserPassword –Verbose

Для управления и автоматической смены паролей локальных администраторов на всех компьютерах домена можно использовать политики Windows LAPS (Local Administrator Password Solution).

Чтобы установить флаг «Срок действия пароля пользователя не истекает» («Password never expired»), выполните:

Set-LocalUser -Name TestUser2 –PasswordNeverExpires $True

Как видите, вам не нужно преобразовывать значение UserAccountControl, как при управлении свойствами учётной записи в AD.

Отключить учетную запись:

Disable-LocalUser -Name TestUser2

Включить пользователя:

Enable-LocalUser -Name TestUser2

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

Remove-LocalUser -Name TestUser2 -Verbose

Используем PowerShell для управления локальными группам

Теперь выведем список локальных групп на компьютере:

Get-LocalGroup

Get-LocalGroup: вывести список доступных локальных групп на компьютере

Создадим новую группу:

New-LocalGroup -Name 'RemoteSupport' -Description 'Remote Support Group'

Теперь добавим в новую группу несколько локальных пользователей и группу локальных администраторов:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('SIvanov','root', 'Administrators') –Verbose

Совет. Как создать, удалить или добавить пользователей в доменные группы описано в статье Работа с группами Active Directory с помощью PowerShell.

Также вы можете добавить пользователя в группы с помощью следующего конвейера (в этом примере мы добавим пользователя в локальную группу, разрешающую ему удаленный доступ к рабочему столу через RDP):

Get-Localuser -Name TestUser2 | Add-LocalGroupMember -Group 'Remote Desktop Users'

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

Get-LocalGroupMember -Group 'RemoteSupport'

В локальную группу могут быть добавлены не только локальные учетные записи (PrincipalSource – Local), но и доменные аккаунты (domain), учетные записи Microsoft (MicrosoftAccount) и аккаунты из Azure (AzureAD).

Get-LocalGroupMember -Group 'RemoteSupport'

Чтобы добавить в локальную группу пользователя из Microsoft или AzureAD, используется такой синтаксис:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('MicrosoftAccount\[email protected]','AzureAD\[email protected]') –Verbose

Чтобы вывести список локальных групп, в которых состоит конкретный пользователь, выполните следующий скрипт:

foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member 'sivanov' –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}

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

Remove-LocalGroupMember -Group 'RemoteSupport' –Member 'testuser2'

Для управления локальными пользователями на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command или Enter-PSSession.

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

$s = new-pssession -computer pc01,pc02,pc03
invoke-command -scriptblock {Get-LocalGroupMember -Group 'RemoteSupport'} -session $s -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"

🎓 Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и "под микроскопом" изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Предыдущая статья Следующая статья


Комментариев: 4 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)