Niedawno Microsoft dodał do systemu Windows standardowy moduł PowerShell do zarządzania lokalnymi użytkownikami i grupami o nazwie Windows. Microsoft.PowerShell.LocalAccounts. Wcześniej to polecenie cmdlet trzeba było pobrać i osobno zaimportować do programu PowerShell. W systemie Windows Server 2016 i Windows 10 konta lokalne są teraz domyślnie dostępne, ponieważ Jest dołączony do programu PowerShell 5.1. We wcześniejszych wersjach systemu Windows, aby korzystać z lokalnego modułu zarządzania kontami, należy zainstalować system Windows Management Framework 5.1.
Treść
- Moduł LocalAccounts
- Zarządzanie lokalnymi użytkownikami systemu Windows za pomocą programu PowerShell
- Zarządzanie lokalnymi grupami Windows za pomocą PowerShell
Moduł LocalAccounts
Łącznie moduł zawiera 15 cmdletów. Pełną listę poleceń cmdlet w module LocalAccounts można wyświetlić w następujący sposób:
Get-Command-Moduł Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember - dodaj użytkownika do grupy lokalnej
- Disable-LocalUser - wyłącz konto lokalne
- Enable-LocalUser - włącz konto (odblokuj)
- Get-LocalGroup - uzyskaj informacje o lokalnej grupie
- Get-LocalGroupMember - pobierz listę użytkowników w grupie lokalnej
- Get-LocalUser - uzyskaj informacje o lokalnym użytkowniku
- Nowa grupa lokalna - utwórz nową grupę lokalną
- New-LocalUser - utwórz użytkownika
- Remove-LocalGroup - usuń grupę
- Remove-LocalGroupMember - usuwa członka z grupy
- Remove-LocalUser - usuwa lokalnego użytkownika
- Zmień nazwę grupy lokalnej - zmień nazwę grupy
- Rename-LocalUser - zmień nazwę użytkownika
- Set-LocalGroup - zmień grupę
- Set-LocalUser - zmień użytkownika
Następnie przyjrzymy się kilku typowym zadaniom zarządzania lokalnymi użytkownikami i grupami na komputerze z systemem Windows 10 za pomocą poleceń cmdlet programu PowerShell z modułu LocalAccounts.
Zarządzanie lokalnymi użytkownikami systemu Windows za pomocą programu PowerShell
Podajemy lokalnych użytkowników systemu Windows na komputerze:
Get-localuser
Jak widać, na komputerze znajduje się 7 kont lokalnych, z czego 3 są wyłączone (włączone = fałszywe).
Aby wyświetlić wszystkie właściwości określonego konta lokalnego (analog polecenia cmdlet do uzyskiwania informacji o użytkowniku z AD - Get-ADUser), uruchom:
Get-LocalUser -Name 'root' | Wybierz obiekt *
AccountExpires:
Opis:
Włączone: prawda
Pełna nazwa:
PasswordChangeableDate: 3/4/2018 11:23:48 PM
Hasło wygasa:
UserMayChangePassword: True
Hasło Wymagane: fałszywe
PasswordLastSet: 22.04.2018 11:23:48 PM
LastLogon: 15.07.2018 21:04:32
Nazwa: root
SID: S-1-5-21-3650440056-3766451173-3310994491-1001
PrincipalSource: Local
ObjectClass: User
Aby uzyskać określony atrybut użytkownika, na przykład czas ostatniej zmiany hasła, wykonaj następujące czynności:
Get-LocalUser -Name 'root' | Select-Object PasswordLastSet
Utwórz nowego użytkownika lokalnego za pomocą polecenia cmdlet New-LocalUser. To polecenie cmdlet umożliwia utworzenie następujących typów kont:
- Konta lokalne Windows
- Konta Microsoft
- Konta usługi Azure AD
Podczas tworzenia konta użytkownika przy użyciu New-LocalUser nie można podać jego hasła jako argumentu Hasło w postaci zwykłego tekstu. Wcześniej hasło należy przekonwertować na bezpieczną linię, żądając hasła interaktywnie:
$ UserPassword = Read-Host -AsSecureString
Lub wpisując hasło bezpośrednio w konsoli PoSh:
$ UserPassword = ConvertTo-SecureString „Pa $$ word !!” -AsPlainText -Force
New-LocalUser „SIvanov” -Hasło $ UserPassword -FullName „Sergey Ivanov” -Opis „Local Account dlya udalennogo vhoda”
Aby zmienić hasło użytkownika, użyj polecenia Set-LocalUser (zakładając, że nowe hasło zostało już przekonwertowane na SecureString):
Set-LocalUser -Name sivanov -Password $ UserPassword -Verbose
Aby ustawić flagę „Hasło nigdy nie wygasło”, uruchom:
Set-LocalUser -Name sivanov -PasswordNeverExpires $ False
Jak widać, nie trzeba konwertować wartości UserAccountControl, jak w przypadku zarządzania właściwościami konta w AD.
Jak pamiętasz, możesz zalogować się do systemu Windows 10 w ramach kont Microsoft. Jeśli chcesz utworzyć nowego użytkownika powiązanego z kontem Microsoft, uruchom następujące polecenie (pamiętaj, że nie musisz określać hasła do konta, ponieważ jest ono przechowywane w Microsoft).
New-LocalUser -Nazwa „MicrosoftAccount \ [email protected]” -Opis „To jest konto w Microsoft”
Aby utworzyć konto lokalne powiązane z kontem w usłudze Azure AD (na przykład korzystasz z usługi Office 365), uruchom polecenie:
New-LocalUser -Nazwa „AzureAD \ [email protected]” -Opis „To jest konto w usłudze Azure AD”
Aby usunąć tego lokalnego użytkownika, wykonaj:
Remove-LocalUser -Name sivanov -Verbose
Zarządzanie lokalnymi grupami Windows za pomocą PowerShell
Teraz wyświetlamy listę lokalnych grup na komputerze:
Get-localgroup
Utwórz nową grupę:
New-LocalGroup -Nazwa „RemoteSupport” -Opis „Remote Support Group”
Teraz dodaj do nowej grupy kilka kont lokalnych i grupę lokalnych administratorów:
Dodaj-LocalGroupMember -Group „RemoteSupport” -Member („SIvanov”, „root”, „Administrators”) -Verbose
Jeśli twój komputer jest częścią domeny, możesz dodać do grupy lokalnej i kont lub grup domeny. Aby to zrobić, należy je określić w formacie nazwa_domeny \ użytkownik2 lub nazwa_domeny \ „administratorzy domeny”.
Możesz również dodać użytkownika do grup, używając następującego potoku (dodaj użytkownika do lokalnych administratorów):
Get-Localuser -Name 'sivanov' | Add-LocalGroupMember -Group 'Administrators'
Wyświetl użytkowników w grupie lokalnej:
Get-LocalGroupMember -Group „RemoteSupport”
Jak widać, korzystamy tylko z kont lokalnych (PrincipalSource - Local). Mogą jednak istnieć konta domeny (domena), konta Microsoft (MicrosoftAccount) i konta z platformy Azure (AzureAD).
Aby wyświetlić listę grup, których członkiem jest dany użytkownik, musisz przejść przez wszystkie grupy lokalne na komputerze:
foreach ($ LocalGroup w Get-LocalGroup)
if (Get-LocalGroupMember $ LocalGroup -Member 'sivanov' -ErrorAction SilentlyContinue)
$ LocalGroup.Name
Aby usunąć użytkownika z grupy, wykonaj:
Remove-LocalGroupMember -Group 'RemoteSupport' -Member 'sivanov'
Aby zarządzać lokalnymi użytkownikami na komputerze zdalnym, musisz najpierw połączyć się z nim za pomocą WinRM za pomocą poleceń cmdlet Invoke-Command lub Enter-PSSession.
Na przykład musimy zebrać listę kont w lokalnej grupie na zdalnych komputerach:
$ s = nowa-pssession -komputer pc01, pc02, pc03
invoke-command -scriptblock Get-LocalGroupMember -Group 'RemoteSupport' -session $ s -hidecomputername | wybierz * -wyklucz RunspaceID | out-gridview -title „LocalAdmins”