Съвсем наскоро 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 "Сергей Иванов" -Описание "Местен акаунт за удаленного входа"
За да промените паролата на потребителя, използвайте командата 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') -Вербоза
Ако вашият компютър е част от домейн, тогава можете да добавите към локалната група и акаунти или групи от домейни. За да направите това, те трябва да бъдат посочени във формата на 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"