Microsoft nedávno přidal do systému Windows standardní modul PowerShell pro správu místních uživatelů a skupin s názvem Windows. Microsoft.PowerShell.LocalAccounts. Dříve musela být tato rutina stažena a importována do PowerShell samostatně. V systémech Windows Server 2016 a Windows 10 je LocalAccounts nyní ve výchozím nastavení k dispozici, protože Je součástí PowerShell 5.1. V dřívějších verzích systému Windows musíte použít modul pro správu místního účtu, musíte nainstalovat Windows Management Framework 5.1.
Obsah:
- Modul LocalAccounts
- Správa místních uživatelů Windows pomocí PowerShell
- Správa místních skupin Windows pomocí prostředí PowerShell
Modul LocalAccounts
Celkově modul obsahuje 15 cmdlets. Kompletní seznam rutin v modulu LocalAccounts lze zobrazit takto:
Get-Command - Modul Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember - přidání uživatele do místní skupiny
- Disable-LocalUser - zakáže místní účet
- Enable-LocalUser - povolit účet (odemknout)
- Get-LocalGroup - získejte informace o místní skupině
- Get-LocalGroupMember - získejte seznam uživatelů v místní skupině
- Get-LocalUser - získejte informace o místním uživateli
- New-LocalGroup - vytvoří novou místní skupinu
- New-LocalUser - vytvoření uživatele
- Remove-LocalGroup - odebere skupinu
- Remove-LocalGroupMember - odebere člena ze skupiny
- Remove-LocalUser - odebrání místního uživatele
- Přejmenovat-LocalGroup - přejmenovat skupinu
- Přejmenovat-LocalUser - přejmenovat uživatele
- Set-LocalGroup - změna skupiny
- Set-LocalUser - změna uživatele
Dále se podíváme na několik typických úkolů pro správu místních uživatelů a skupin v počítači se systémem Windows 10 pomocí rutin PowerShell z modulu LocalAccounts.
Správa místních uživatelů Windows pomocí PowerShell
Uvádíme místní uživatele systému Windows v počítači:
Získejte místního uživatele
Jak vidíte, v počítači je 7 místních účtů, z nichž 3 jsou deaktivovány (Enabled = False).
Chcete-li zobrazit všechny vlastnosti konkrétního místního účtu (analog rutiny pro získání informací o uživateli z AD - Get-ADUser), spusťte:
Get-LocalUser - jméno 'root' | Vybrat objekt *
AccountExpires:
Popis:
Povoleno: Pravda
Celé jméno:
HesloChangeableDate: 3/4/2018 23:23:48 PM
PasswordExpires:
UserMayChangePassword: True
PasswordRequired: False
PasswordLastSet: 22/22/2018 23:23:48 PM
LastLogon: 15/15/2018 21:04:32 PM
Jméno: root
SID: S-1-5-21-3650440056-3766451173-3310994491-1001
Hlavní zdroj: místní
ObjectClass: User
Chcete-li získat například konkrétní atribut uživatele, například čas, kdy bylo heslo naposledy změněno, postupujte takto:
Get-LocalUser - jméno 'root' | Vyberte objektové hesloLastSet
Vytvořte nového místního uživatele pomocí rutiny New-LocalUser. Tato rutina vám umožňuje vytvořit následující typy účtů:
- Windows Local Accounts
- Účty společnosti Microsoft
- Azure AD účty
Při vytváření uživatelského účtu pomocí nástroje New-LocalUser nemůžete zadat jeho heslo jako argument hesla v prostém textu. Dříve musí být heslo převedeno na zabezpečenou linku interaktivním vyžádáním hesla:
$ UserPassword = Read-Host -AsSecureString
Nebo zadáním hesla přímo v konzole PoSh:
$ UserPassword = ConvertTo-SecureString "Pa $$ word !!" -AsPlainText -Force
New-LocalUser "SIvanov" -Password $ UserPassword -FullName "Sergey Ivanov" -Popis "Local Account dlya udalennogo vhoda"
Chcete-li změnit uživatelské heslo, použijte příkaz Set-LocalUser (za předpokladu, že jste již nové heslo převedli na SecureString):
Set-LocalUser - jméno sivanov -Password $ UserPassword -Verbose
Chcete-li nastavit příznak „Heslo nikdy nevypršelo“, spusťte:
Set-LocalUser - jméno sivanov -PasswordNeverExpires $ False
Jak vidíte, nemusíte převádět hodnotu UserAccountControl, jako při správě vlastností účtu v AD.
Jak si pamatujete, můžete se přihlásit k systému Windows 10 pod účty Microsoft. Pokud potřebujete vytvořit nového uživatele přidruženého k účtu Microsoft, spusťte následující příkaz (mějte na paměti, že není nutné zadávat heslo účtu, protože je uloženo v Microsoft).
New-LocalUser - Jméno "MicrosoftAccount \ [email protected]" - Popis "Toto je účet v Microsoft"
Chcete-li vytvořit místní účet, který je přidružen k vašemu účtu v Azure AD (například používáte Office 365), spusťte příkaz:
New-LocalUser - Jméno "AzureAD \ [email protected]" -Popis "Toto je účet v Azure AD"
Chcete-li tohoto místního uživatele odebrat, postupujte takto:
Remove-LocalUser - jméno sivanov -Verbose
Správa místních skupin Windows pomocí prostředí PowerShell
Nyní uvádíme seznam místních skupin v počítači:
Získejte místní skupinu
Vytvořit novou skupinu:
New-LocalGroup - Jméno 'RemoteSupport' - Popis 'Remote Support Group'
Nyní do nové skupiny přidejte několik místních účtů a skupinu místních správců:
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('SIvanov', 'root', 'Administrators') -Verbose
Pokud je počítač součástí domény, můžete přidat účty nebo skupiny místní skupiny a domény. Chcete-li to provést, musí být zadány ve formátu DomainName \ user2 nebo DomainName \ 'domain admins'.
Můžete také přidat uživatele do skupin pomocí následujícího potrubí (přidat uživatele k místním správcům):
Get-Localuser - jméno 'sivanov' | Add-LocalGroupMember -Group 'Administrators'
Seznam uživatelů v místní skupině:
Get-LocalGroupMember -Group 'RemoteSupport'
Jak vidíte, používáme pouze místní účty (PrincipalSource - Local). Mohou však existovat účty domény (doména), účty Microsoft (MicrosoftAccount) a účty Azure (AzureAD).
Chcete-li uvést skupiny, ve kterých je konkrétní uživatel členem, musíte projít všechny místní skupiny v počítači:
foreach ($ LocalGroup v Get-LocalGroup)
if (Get-LocalGroupMember $ LocalGroup -Member 'sivanov' -ErrorAction SilentlyContinue)
$ LocalGroup.Name
Chcete-li odebrat uživatele ze skupiny, postupujte takto:
Remove-LocalGroupMember -Group 'RemoteSupport' -Member 'sivanov'
Chcete-li spravovat místní uživatele ve vzdáleném počítači, musíte se k němu nejprve připojit pomocí WinRM pomocí rutiny Invoke-Command nebo Enter-PSSession..
Například musíme shromažďovat seznam účtů v místní skupině na vzdálených počítačích:
$ s = new-pssession - computer pc01, pc02, pc03
invoke-command -scriptblock Get-LocalGroupMember -Group 'RemoteSupport' -session $ s -hidecomputername | vyberte * -Exclude RunspaceID | out-gridview - title "LocalAdmins"