Microsoft Active Directory fungerar som en centraliserad punkt för administration, auktorisering och autentisering. I AD beviljas åtkomst till nätverksresurser till säkerhetsprinciper, t.ex. användarkonton och datorkonton, och dessa behörigheter kan ändras med tiden. För att förenkla åtkomsthanteringen och förbättra säkerheten använder medelstora och stora företag ofta Active Directory-säkerhetsgrupper, som kan innehålla användarkonton, datorkonton och andra grupper. De använder också ofta distributionsgrupper för att hantera e-postdistributionslistor. Både säkerhets- och distributionsgrupper har unika säkerhetsidentifierare (SID) och globalt unika identifierare (GUID).
Snapin-modulen ADUC MMC är utmärkt för att hantera båda typerna av grupper, men PowerShell är ett mycket effektivare sätt att hantera dem i bulk.
Om du inte redan är bekant med AD-grupper och grupphantering bör du läsa guiden Active Directory Group Management Best Practice innan du går vidare.
Tänk också på att du måste importera modulen för att interagera med AD – Active Directory Module for Microsoft Windows PowerShell – för att kunna använda dessa PowerShell-skript. Den här modulen infördes i Windows Server 2008 R2 och är aktiverad som standard i Windows Server 2012 och senare. Du kan få en fullständig lista över AD-modulens cmdlets genom att köra följande kommando:
Get-Command -Module ActiveDirectory
Den fullständiga listan innehåller 147 cmdlets, men endast dessa elva är relaterade till Active Directory-grupper:
- Add-ADG GroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
Skapa en Active Directory-grupp med PowerShell
Skapa en AD-grupp, använda cmdlet New-ADGroup. Du kan få fram dess syntax genom att köra följande kommando:
Get-Command New-ADGroup –Syntax
Det enklaste sättet att skapa en grupp är att köra det här korta skriptet:
New-ADGroup "Group Name"
Systemet kommer att be dig att ange parametern ”GroupScope”, och sedan kommer det att skapa en ny grupp. Den här gruppen kommer dock att ha standardvärden, till exempel:
- Den kommer att skapas i standard-LDAP-behållaren som heter ”Users”.
- Den kommer att ha grupptypen ”Security”.
- Fältena members, member of, description, email och notes kommer alla att vara tomma.
Föreställ dig att vi vill skapa en säkerhetsgrupp som heter ”Quality” i vår AD DC. Vi använder följande parametrar: Vi använder följande parametrar: Den ska finnas i OU:n ”Production” (-Path), den ska vara en säkerhetsgrupp (-GroupCategory) och den ska vara global (-GroupScope).
New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
Om du vill skapa en universell distributionsgrupp ändrar du helt enkelt parametern -GroupCategory till ”Distribution” och parametern -GroupScope till ”Universal”. Du kan också ändra LDAP-sökvägen genom att ändra parametern -Path.
Släcka en Active Directory-grupp med PowerShell
Om du vill ta bort en AD-grupp använder du cmdlet Remove-ADGroup. Det enklaste skriptet för detta ser ut så här:
Remove-ADGroup -Identity Quality
Du blir ombedd att bekräfta raderingen av gruppen.
Lägga till användare och datorer till en grupp med PowerShell
Du kan lägga till användare till en AD-grupp med cmdletten Add-AdGroupMember. Om du till exempel behöver lägga till två användare, B.Jackson och E.Franklin, till gruppen ”Quality”, skulle skriptet se ut så här:
Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
När du har lagt till användare till en säkerhetsgrupp kan du köra skriptet nedan för att kontrollera att de är listade som medlemmar:
Get-ADGroupMember -Identity Quality
Om du behöver lägga till användare i en annan säkerhets- eller distributionsgrupp, till exempel ”Domain Admins”, anger du ”Domain Admins” som värde för parametern -Identity. Om du vill att en grupp ska vara medlem i en annan grupp anger du ett gruppnamn som värde för parametern -Members. Samma princip gäller för datorkonton, men du måste lägga till ett dollartecken ($) i slutet av datorkontonamnet. Om du till exempel vill lägga till datorn ”WKS043” i en grupp anger du ”WKS043$” som värde för parametern -Member:
Add-AdGroupMember -Identity Quality -Members WKS043$
Lägga till en användare i flera grupper
För att lägga till en användare i flera grupper samtidigt kör du följande skript.
"Managers","Quality" | Add-ADGroupMember -Members ` (Read-Host -Prompt "Enter User Name")
Du uppmanas att ange användarnamnet.
Lägga till användare till en grupp från en CSV-fil
Om du vill lägga till ett stort antal användare till en grupp kan du ange dem i en CSV-fil och sedan importera filen. Observera att listan över användarnamn i CSV-filen måste innehålla SamAccountNames i kolumnen ”users”, enligt nedan:
För att lägga till användare till en grupp från en CSV-fil kör du följande PowerShell-skript:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
Kopiera användare från en grupp till en annan
Om du vill kopiera alla medlemmar från en grupp till en annan grupp kör du följande skript:
Get-ADGroupMember "Quality" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "QualityControl" -Members $_}
Häva användare eller datorer från en grupp
Om du vill ta bort en användare från en grupp använder du cmdlet Remove-ADGroupMember:
Remove-ADGroupMember -Identity Quality -Members J.Robinson
Om du vill ta bort ett datorkonto från en grupp anger du datornamnet med ett dollartecken ($) på slutet som värde för parametern -Members.
Hävande av flera användarkonton från en grupp
Ett enkelt sätt att ta bort flera användare från en AD-grupp är att skapa en CSV-fil med listan över användarnamn och sedan ta bort användarna från gruppobjektet med det här skriptet:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
För att ta bort en användare från alla grupper
För att ta bort en användare från alla grupper kör du det här skriptet:
Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object { $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}
Observera att användaren kommer att förlora allt medlemskap i alla grupper utom ”Domain Users”, som kan tas bort manuellt vid behov.
Rapportera om Active Directory-grupper
Nu när vi vet hur man utför många vanliga Active Directory-hanteringsuppgifter relaterade till grupper med hjälp av PowerShell, ska vi se hur man rapporterar om vilka grupper som finns i AD:
Om att lista alla grupper i AD använder du skriptet nedan:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
Självklart vill du också granska AD-gruppmedlemmar och AD-gruppmedlemskapsändringar. Här finns länkar till instruktioner för att utföra dessa mer komplexa uppgifter:
- Hur man övervakar ändringar av gruppmedlemskap i Active Directory
- Hur man hämtar rapporter om AD-användares gruppmedlemskap
- Hur man exporterar medlemmar i en viss AD-grupp
- Hantering av OU:er och flyttning av deras objekt med PowerShell
Slutsats
Nu har du lärt dig hur du hanterar grupper och gruppmedlemskap i Active Directory med PowerShell-skript, prova att utföra några av grupphanteringsuppgifterna själv. Var dock försiktig och glöm inte att aktivera funktionen för papperskorgen i Active Directory så att du enkelt kan återställa dina ändringar om något går fel. Kom ihåg att ADUC MMC-snapin-modulen är utmärkt för att hantera grupper och gruppmedlemskap, men PowerShell är mycket bättre för att hantera grupper i bulk.