Управление на местни потребители и групи с PowerShell

Съвсем наскоро Microsoft добави стандартен модул PowerShell към Windows за управление на местни потребители и групи, наречени Windows. Microsoft.PowerShell.LocalAccounts. Преди това този командлет трябваше да бъде изтеглен и импортиран в PowerShell отделно. В Windows Server 2016 и Windows 10 LocalAccounts вече е достъпно по подразбиране, защото Той е включен в PowerShell 5.1. В по-ранните версии на Windows, за да използвате локалния модул за управление на акаунти, трябва да инсталирате Windows Management Framework 5.1.

Съдържание:

  • Модул LocalAccounts
  • Управление на локални потребители на Windows с PowerShell
  • Управление на локални групи на Windows с PowerShell

Модул LocalAccounts

Общо модулът включва 15 cmdlets. Пълен списък на командлети в модула LocalAccounts може да бъде показан така:

Get-Command -Module 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:
Описание:
Активирано: Вярно
FullName:
PasswordChangeableDate: 3/4/2018 23:23:48 PM
PasswordExpires:
UserMayChangePassword: Вярно
Изисквана парола: Неправилно
PasswordLastSet: 22.04.2018 23:23:48 PM
LastLogon: 15.07.2018 21:04:32
Име: корен
SID: S-1-5-21-3650440056-3766451173-3310994491-1001
PrincipalSource: Local
ObjectClass: Потребител

За да получите конкретен потребителски атрибут, например, времето, когато паролата е последно променена, направете:

Get-LocalUser -Name 'root' | Select-Object PasswordLastSet

Създайте нов локален потребител с командлета New-LocalUser. Този командлет ви позволява да създавате следните типове акаунти:

  • Местни акаунти на Windows
  • Microsoft акаунти
  • Azure AD акаунти

Когато създавате потребителски акаунт с помощта на New-LocalUser, не можете да посочите паролата му като аргумент за парола в ясен текст. Преди това паролата трябва да бъде преобразувана в сигурна линия, като поиска паролата интерактивно:

$ UserPassword = Read-Host -AsSecureString

Или като въведете паролата директно в конзолата PoSh:

$ UserPassword = ConvertTo-SecureString "Pa $$ word !!" -AsPlainText -Force

New-LocalUser "SIvanov" -Password $ UserPassword -FullName "Сергей Иванов" -Описание "Местен акаунт за удаленного входа"

За да създадете потребител в AD домейн, използвайте командлета New-ADUser.

За да промените паролата на потребителя, използвайте командата Set-LocalUser (при условие че вече сте преобразували новата парола в SecureString):

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

За да зададете знамето „Паролата никога не е изтекла“, изпълнете:

Set-LocalUser -Name sivanov -PasswordNeverExpires $ False

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

Както си спомняте, можете да влезете в Windows 10 под акаунти на Microsoft. Ако трябва да създадете нов потребител, свързан с акаунт в Microsoft, изпълнете следната команда (обърнете внимание, че не е необходимо да посочвате парола за акаунт, тъй като тя се съхранява в Microsoft).

New-LocalUser -Name "MicrosoftAccount \ [email protected]" -Описание "Това е акаунт в Microsoft"

За да създадете локален акаунт, който е свързан с вашия акаунт в Azure AD (например използвате Office 365), изпълнете командата:

New-LocalUser -Name "AzureAD \ [email protected]" -Описание "Това е акаунт в Azure AD"

За да премахнете този локален потребител, направете:

Премахване-LocalUser -Наименование sivanov -Verbose

Управление на локални групи на Windows с PowerShell

Сега изброяваме локалните групи на компютъра:

Get-LocalGroup

Създайте нова група:

New-LocalGroup -Name 'RemoteSupport' -Описание 'Remote Support Group'

Сега добавете няколко местни акаунта и група местни администратори към новата група:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('SIvanov', 'root', 'Administrators') -Вербоза

съвет. За да създадете, изтриете или добавите потребители в групи от домейни, вижте статията Работа с Active Directory групи, използващи PowerShell.

Ако вашият компютър е част от домейн, тогава можете да добавите към локалната група и акаунти или групи от домейни. За да направите това, те трябва да бъдат посочени във формата на DomainName \ user2 или DomainName \ 'домейн администратори'.

Можете също да добавите потребител към групи, като използвате следния тръбопровод (добавете потребителя към локални администратори):

Get-Localuser -Name 'sivanov' | Add-LocalGroupMember -Group „Администратори“

Списък на потребителите в местната група:

Get-LocalGroupMember -Group „RemoteSupport“

Както можете да видите, ние използваме само локални акаунти (PrincipalSource - Local). Възможно е обаче да има домейнови акаунти (домейн), акаунти на Microsoft (MicrosoftAccount) и акаунти от Azure (AzureAD).

За да изброите групите, в които е определен потребител, ще трябва да сортирате всички локални групи на компютъра:

foreach ($ LocalGroup в 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 -компютър pc01, pc02, pc03
invoke-command -scriptblock Get-LocalGroupMember -Group 'RemoteSupport' -session $ s -hidecomputername | изберете * -exclude RunspaceID | out-gridview -title "LocalAdmins"