Zarządzanie lokalnymi użytkownikami i grupami za pomocą PowerShell

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 utworzyć użytkownika w domenie AD, użyj polecenia cmdlet New-ADUser.

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

Wskazówka. Aby tworzyć, usuwać lub dodawać użytkowników do grup domen, zobacz artykuł Praca z grupami Active Directory za pomocą PowerShell.

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”