Відносно недавно 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

модуль 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:

Get-LocalUser

Як ви бачите, до нього додається 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

Get-LocalUser отримуємо інформацію про локальному користувача

Створимо нового локального користувача за допомогою командлета 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"

Для створення користувача в домені AD потрібно використовувати командлет New-ADUser.

Щоб змінити пароль користувача, скористайтеся командою Set-LocalUser (припускаємо, що ви вже перетворили новий пароль в SecureString):

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

New-LocalUser створити локального користувача

Щоб встановити прапор «Термін дії пароля користувача не закінчується» ( «Password never expired»), виконайте:

Set-LocalUser -Name sivanov –PasswordNeverExpires $True

Як бачите, вам не потрібно перетворювати значення UserAccountControl, як при управлінні властивостями облікового запису в AD.

Як ви пам’ятаєте, ви можете авторизуватися в Windows 10 під обліковими записами Microsoft. Якщо потрібно створити нового користувача, пов’язаного з членством Microsoft, виконайте наступну команду (зверніть увагу, що пароль облікового запису вказувати не потрібно, тому що він зберігається в Microsoft).

New-LocalUser -Name "MicrosoftAccountSomeAccount@outlook.com" -Description "Это учетка в Microsoft"

Для створення локальної облікового запису, яка пов’язана з вашим аккаунтом в Azure AD (наприклад, ви користуєтеся Office 365), виконайте команду:

New-LocalUser -Name "AzureADItpro@winitpro.ru" -Description "Это учетка в Azure AD"

Щоб видалити цього локального користувача, виконайте:

Remove-LocalUser -Name sivanov -Verbose

Управління локальними групами Windows за допомогою PowerShell

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

Get-LocalGroup

Get-LocalGroup

Створимо нову групу:

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

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

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('SIvanov','root', 'Администраторы') –Verbose

Якщо ваш комп’ютер входить до домену, то ви можете додати в локальну групи і доменні акаунти або групи. Для цього їх потрібно вказувати в форматі DomainName user2 або DomainName ‘domain admins’.

Add-LocalGroupMember додати користувача в доменну групу

Також ви можете додати користувача в групи за допомогою наступного конвеєра (додамо користувача в локальні адміністратори):

Get-Localuser -Name 'sivanov' | Add-LocalGroupMember -Group 'Administrators'

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

Get-LocalGroupMember -Group 'RemoteSupport'

Як ви бачите, ми використовуємо тільки локальні облікові записи (PrincipalSource – Local). Однак тут можуть бути доменні акаунти (domain), облікові записи Microsoft (MicrosoftAccount) і акаунти з Azure (AzureAD).

Get-LocalGroupMember -Group 'RemoteSupport'

Щоб вивести список груп, в яких складається конкретний користувач, доведеться перебрати всі локальні групи на комп’ютері:

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 {Get-LocalGroupMember -Group 'RemoteSupport'} -session $s -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"

Leave a Reply

Your email address will not be published. Required fields are marked *