Для управления локальными пользователями и группами в Windows можно использовать встроенный модуль PowerShell — Microsoft.PowerShell.LocalAccounts. С помощью этого модуля вы можете создать или удалить локального пользователя, создать новую группу безопасности и добавить в неё пользователей. Модуль доступен во всех версиях Windows, начиная с Windows Server 2016 и Windows 10. В более ранних версиях Windows модуль устанавливается с Windows Management Framework 5.1 при обновлении PowerShell.
Полный список командлетов 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 при помощи командлетов из модуля LocalAccounts.
Создать нового локального пользователя с помощью PowerShell
Чтобы создать нового пользователя, выполните команду:
New-LocalUser -Name "TestUser1" -FullName "Test User" -Description "User for tests"
Задайте пароль для нового пользователя:
$pass = ConvertTo-SecureString "softcomputers@ss321!" -AsPlainText -Force
New-LocalUser -Name TestUser2 -Password $pass
Чтобы сразу добавить пользователя в группу локальных администраторов, выполните:
Add-LocalGroupMember -Group Administrators -Member TestUser2
При создании пользователя можно использовать дополнительные параметры:
— AccountExpires — задаёт дату истечения срока действия учётной записи, после которой она будет автоматически отключена (по умолчанию командлет New-LocalUser создаёт учётную запись без ограничения по сроку действия).
— AccountNeverExpires — устанавливает, что срок действия учётной записи не истекает.
— Disabled — сразу отключает учётную запись после её создания.
— PasswordNeverExpires — указывает, что пароль не требует регулярной смены и действует неограниченно долго.
— UserMayNotChangePassword — запрещает пользователю изменять свой пароль.
Для создания нового пользователя в домене AD нужно использовать командлет New-ADUser.
Управление локальными пользователями Windows из PowerShell
Чтобы вывести список всех локальных пользователей на текущем компьютере:
Get-LocalUser
Вывести все свойства конкретного локального пользователя:
Get-LocalUser -Name 'root' | Select-Object *
Обратите внимание на атрибут PrincipalSource. В нем указан тип аккаунта. Это может быть:
Локальный пользователь Windows — (PrincipalSource: Local)
Учетные записи Microsoft — (PrincipalSource: Microsoft Account)
Учетные записи Azure AD — (PrincipalSource: AzureAD)
Чтобы получить значение конкретного атрибута, например, время последней смены пароля:
Get-LocalUser -Name 'root' | Select-Object PasswordLastSet
Изменить пароль существующего пользователя:
Set-LocalUser -Name TestUser2 -Password $UserPassword -Verbose
Установить флаг «Срок действия пароля пользователя не истекает»:
Set-LocalUser -Name TestUser2 -PasswordNeverExpires $True
Отключить учётную запись:
Disable-LocalUser -Name TestUser2
Включить учётную запись:
Enable-LocalUser -Name TestUser2
Удалить локального пользователя:
Remove-LocalUser -Name TestUser2 -Verbose
Используем PowerShell для управления локальными группами
Чтобы вывести список локальных групп на компьютере:
Get-LocalGroup
Создать новую группу:
New-LocalGroup -Name 'RemoteSupport' -Description 'Remote Support Group'
Добавить пользователей и группу локальных администраторов в новую группу:
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('SIvanov','root', 'Administrators') -Verbose
Добавить пользователя в локальную группу для RDP доступа:
Get-LocalUser -Name TestUser2 | Add-LocalGroupMember -Group 'Remote Desktop Users'
Вывести список пользователей в локальной группе:
Get-LocalGroupMember -Group 'RemoteSupport'
В локальную группу могут быть добавлены не только локальные учетные записи (PrincipalSource – Local), но и доменные аккаунты (domain), учетные записи Microsoft (MicrosoftAccount) и аккаунты из Azure (AzureAD).
Добавить в локальную группу пользователя из 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 -ComputerName pc01,pc02,pc03
Invoke-Command -ScriptBlock {Get-LocalGroupMember -Group 'RemoteSupport'} -Session $s -HideComputerName | Select * -ExcludeProperty RunspaceID | Out-GridView -Title "LocalAdmins"
Эти команды и скрипты помогут эффективно управлять пользователями и группами в Windows с использованием PowerShell, позволяя автоматизировать выполнение административных задач и повысить безопасность сети.