Microsoft Active Directory służy jako scentralizowany punkt do administracji, autoryzacji i uwierzytelniania. W AD, dostęp do zasobów sieciowych jest przyznawany zasadom bezpieczeństwa, takim jak konta użytkowników i konta komputerów, a uprawnienia te mogą się zmieniać w czasie. Aby uprościć zarządzanie dostępem i poprawić bezpieczeństwo, średnie i duże firmy często korzystają z grup bezpieczeństwa Active Directory, które mogą zawierać konta użytkowników, konta komputerów i inne grupy. Często używają również grup dystrybucyjnych do zarządzania listami dystrybucyjnymi poczty elektronicznej. Zarówno grupy zabezpieczeń, jak i grupy dystrybucyjne mają unikalne identyfikatory zabezpieczeń (SID) i globalnie unikalne identyfikatory (GUID).
Instrukcja ADUC MMC jest świetna do zarządzania obydwoma typami grup, ale PowerShell jest znacznie bardziej efektywnym sposobem na zarządzanie nimi masowo.
Jeśli nie jesteś jeszcze zaznajomiony z grupami AD i zarządzaniem grupami, przeczytaj przewodnik Active Directory Group Management Best Practice zanim przejdziesz dalej.
Pamiętaj również, że aby użyć tych skryptów PowerShell, musisz zaimportować moduł do interakcji z AD – Active Directory Module for Microsoft Windows PowerShell. Moduł ten został wprowadzony w Windows Server 2008 R2 i jest domyślnie włączony w Windows Server 2012 i nowszych. Pełną listę cmdletów modułu AD można uzyskać, wykonując następujące polecenie:
Get-Command -Module ActiveDirectory
Pełna lista zawiera 147 cmdletów, ale tylko te jedenaście jest związanych z grupami Active Directory:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-.ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
Tworzenie grupy Active Directory za pomocą PowerShell
Aby utworzyć grupę AD, należy użyć cmdleta New-ADGroup. Jego składnię można poznać, uruchamiając następujące polecenie:
Get-Command New-ADGroup –Syntax
Najprostszym sposobem utworzenia grupy jest uruchomienie tego krótkiego skryptu:
New-ADGroup "Group Name"
System poprosi o podanie parametru „GroupScope”, a następnie utworzy nową grupę. Grupa ta będzie miała jednak wartości domyślne, takie jak:
- Zostanie utworzona w domyślnym kontenerze LDAP o nazwie „Users”.
- Będzie miała typ grupy „Security”.
- Pola members, member of, description, email i notes będą puste.
Wyobraźmy sobie, że chcemy utworzyć grupę bezpieczeństwa o nazwie „Quality” w naszym AD DC. Użyjmy następujących parametrów: Powinna ona znajdować się w „Production” OU (-Path), powinna być grupą bezpieczeństwa (-GroupCategory), oraz powinna być globalna (-GroupScope).
New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
Jeśli chcesz stworzyć uniwersalną grupę dystrybucyjną, po prostu zmień parametr -GroupCategory na „Distribution”, a parametr -GroupScope na „Universal”. Możesz również zmienić ścieżkę LDAP, zmieniając parametr -Path.
Deleting an Active Directory Group with PowerShell
Aby usunąć grupę AD, użyj cmdleta Remove-ADGroup. Najprostszy skrypt będzie wyglądał następująco:
Remove-ADGroup -Identity Quality
Wtedy zostaniesz poproszony o potwierdzenie usunięcia grupy.
Adding Users and Computers to a Group with PowerShell
Możesz dodać użytkowników do grupy AD za pomocą cmdletu Add-AdGroupMember. Na przykład, jeśli chcesz dodać dwóch użytkowników, B.Jackson i E.Franklin, do grupy „Quality”, oto jak wyglądałby skrypt:
Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
Po dodaniu użytkowników do grupy zabezpieczeń można uruchomić poniższy skrypt, aby sprawdzić, czy są oni wymienieni jako członkowie:
Get-ADGroupMember -Identity Quality
Jeśli potrzebujesz dodać użytkowników do innej grupy zabezpieczeń lub dystrybucji, takiej jak „Administratorzy domeny”, określ „Administratorzy domeny” jako wartość parametru -Identity. Jeśli chcesz, aby jedna grupa była członkiem innej grupy, podaj nazwę grupy jako wartość parametru -Members. Ta sama zasada dotyczy kont komputerowych, ale należy dodać znak dolara ($) na końcu nazwy konta komputerowego. Na przykład, aby dodać komputer „WKS043” do grupy, należy podać „WKS043$” jako wartość parametru -Member:
Add-AdGroupMember -Identity Quality -Members WKS043$
Dodawanie użytkownika do wielu grup
Aby dodać użytkownika do wielu grup jednocześnie, należy uruchomić następujący skrypt.
"Managers","Quality" | Add-ADGroupMember -Members ` (Read-Host -Prompt "Enter User Name")
Zostaniesz poproszony o wprowadzenie nazwy użytkownika.
Dodawanie użytkowników do grupy z pliku CSV
Jeśli chcesz dodać dużą liczbę użytkowników do grupy, możesz określić ich w pliku CSV, a następnie zaimportować ten plik. Należy pamiętać, że lista nazw użytkowników w pliku CSV musi zawierać nazwy SamAccountNames w kolumnie „users”, jak pokazano poniżej:
Aby dodać użytkowników do grupy z pliku CSV, należy uruchomić następujący skrypt PowerShell:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
Kopiowanie użytkowników z jednej grupy do innej
Jeśli chcesz skopiować wszystkich członków z jednej grupy do innej grupy, uruchom następujący skrypt:
Get-ADGroupMember "Quality" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "QualityControl" -Members $_}
Usuwanie użytkowników lub komputerów z grupy
Aby usunąć użytkownika z grupy, użyj polecenia cmdlet Remove-ADGroupMember:
Remove-ADGroupMember -Identity Quality -Members J.Robinson
Aby usunąć konto komputera z grupy, podaj nazwę komputera ze znakiem dolara ($) na końcu jako wartość parametru -Members.
Usuwanie wielu kont użytkowników z grupy
Łatwym sposobem na usunięcie wielu użytkowników z grupy AD jest utworzenie pliku CSV z listą nazw użytkowników, a następnie usunięcie tych użytkowników z obiektu grupy za pomocą tego skryptu:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
Usuwanie użytkownika ze wszystkich grup
Aby usunąć użytkownika ze wszystkich grup, uruchom ten skrypt:
Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object { $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}
Zauważ, że użytkownik straci wszystkie członkostwa w grupach z wyjątkiem „Użytkowników domeny”, które można usunąć ręcznie w razie potrzeby.
Raportowanie o grupach Active Directory
Teraz, gdy wiemy, jak wykonać wiele typowych zadań zarządzania Active Directory związanych z grupami za pomocą PowerShell, zobaczmy, jak raportować, jakie grupy istnieją w AD:
Aby wyświetlić listę wszystkich grup w AD, użyj poniższego skryptu:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
Oczywiście, będziesz chciał również przejrzeć członków grup AD i zmiany w członkostwie grup AD. Poniżej znajdują się łącza do instrukcji dotyczących wykonywania tych bardziej złożonych zadań:
- How to Monitor Active Directory Group Membership Changes
- How to Get AD User Group Membership Reports
- How to Export Members of a Particular AD Group
- Managing OUs and Moving Their Objects with PowerShell
Conclusion
Teraz, gdy już dowiedziałeś się, jak zarządzać grupami i członkostwem grup w Active Directory za pomocą skryptów PowerShell, spróbuj wykonać część zadań związanych z zarządzaniem grupami samodzielnie. Należy jednak zachować ostrożność i nie zapomnieć o włączeniu funkcji kosza Active Directory Recycle Bin, aby móc łatwo cofnąć wprowadzone zmiany, jeśli coś pójdzie nie tak. Pamiętaj, że ADUC MMC snap-in jest świetny do zarządzania grupami i członkostwem w grupach, ale PowerShell jest znacznie lepszy do masowego zarządzania grupami.