Microsoft Active Directory fungerer som et centraliseret punkt for administration, godkendelse og autentificering. I AD gives adgang til netværksressourcer til sikkerhedsprincipper, f.eks. brugerkonti og computerkonti, og disse tilladelser kan ændres over tid. For at forenkle adgangsstyringen og forbedre sikkerheden bruger mellemstore og store virksomheder ofte Active Directory-sikkerhedsgrupper, som kan indeholde brugerkonti, computerkonti og andre grupper. De bruger også ofte distributionsgrupper til at administrere e-mail-distributionslister. Både sikkerheds- og distributionsgrupper har unikke sikkerhedsidentifikatorer (SID’er) og globalt unikke identifikatorer (GUID’er).

ADUC MMC-snap-in’en er fantastisk til at administrere begge typer grupper, men PowerShell er en meget mere effektiv måde at administrere dem i bulk på.

Hvis du ikke allerede er bekendt med AD-grupper og gruppeadministration, skal du læse vejledningen Active Directory Group Management Best Practice, før du går videre.

Husk også, at for at kunne bruge disse PowerShell-scripts skal du importere modulet til interaktion med AD – Active Directory Module for Microsoft Windows PowerShell. Dette modul blev indført i Windows Server 2008 R2 og er aktiveret som standard i Windows Server 2012 og senere. Du kan få den komplette liste over AD-modul-cmdlets ved at køre følgende kommando:

Get-Command -Module ActiveDirectory

Den komplette liste indeholder 147 cmdlets; det er dog kun disse elleve, der vedrører Active Directory-grupper:

  • Add-ADGroupMember
  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Hent-ADGroup
  • Hent-ADGroupMember
  • Hent-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADGroupMember
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

Skabelse af en Active Directory-gruppe med PowerShell

For at oprette en AD-gruppe, bruge cmdletten New-ADGroup. Du kan få syntaksen ved at køre følgende kommando:

Get-Command New-ADGroup –Syntax

Den nemmeste måde at oprette en gruppe på er at køre dette korte script:

New-ADGroup "Group Name"

Systemet vil bede dig om at angive parameteren “GroupScope”, og derefter vil det oprette en ny gruppe. Denne gruppe vil dog have standardværdier, såsom:

  • Den vil blive oprettet i LDAP-standardbeholderen kaldet “Users”.
  • Den vil have gruppetypen “Security”.
  • Felterne members, member of, description, email og notes vil alle være tomme.

Lad os forestille os, at vi ønsker at oprette en sikkerhedsgruppe kaldet “Quality” på vores AD DC. Lad os bruge følgende parametre: Den skal være i OU’en “Production” (-Path), det skal være en sikkerhedsgruppe (-GroupCategory), og den skal være global (-GroupScope).

New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose

Hvis du ønsker at oprette en universel distributionsgruppe, skal du blot ændre parameteren -GroupCategory til “Distribution” og parameteren -GroupScope til “Universal”. Du kan også ændre LDAP-stien ved at ændre parameteren -Path.

Sletning af en Active Directory-gruppe med PowerShell

For at slette en AD-gruppe skal du bruge cmdletten Remove-ADGroup. Det nemmeste script til dette vil se således ud:

Remove-ADGroup -Identity Quality

Du vil blive bedt om at bekræfte sletningen af gruppen.

Tilføjelse af brugere og computere til en gruppe med PowerShell

Du kan tilføje brugere til en AD-gruppe med cmdletten Add-AdGroupMember. Hvis du f.eks. havde brug for at tilføje to brugere, B.Jackson og E.Franklin, til gruppen “Quality”, ville scriptet se således ud:

Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin

Når du har tilføjet brugere til en sikkerhedsgruppe, kan du køre nedenstående script for at verificere, at de er opført som medlemmer:

Get-ADGroupMember -Identity Quality

Hvis du skal tilføje brugere til en anden sikkerheds- eller distributionsgruppe, f.eks. “Domain Admins”, skal du angive “Domain Admins” som værdien for -Identity-parameteren. Hvis du har brug for, at en gruppe skal være medlem af en anden, skal du angive et gruppenavn som værdien for parameteren -Members. Det samme princip gælder for computerkonti, men du skal tilføje et dollartegn ($) til sidst i computerkontonavnet. Hvis du f.eks. vil føje computeren “WKS043” til en gruppe, skal du angive “WKS043$” som værdien for parameteren -Member:

Add-AdGroupMember -Identity Quality -Members WKS043$

Tilføjelse af en bruger til flere grupper

Hvis du vil føje en bruger til flere grupper på én gang, skal du køre følgende script.

"Managers","Quality" | Add-ADGroupMember -Members ` (Read-Host -Prompt "Enter User Name")

Du vil blive bedt om at indtaste brugernavnet.

Tilføjelse af brugere til en gruppe fra en CSV-fil

Hvis du vil tilføje et stort antal brugere til en gruppe, kan du angive dem i en CSV-fil og derefter importere filen. Bemærk, at listen over brugernavne i CSV-filen skal indeholde SamAccountNames i kolonnen “users”, som vist nedenfor:

Hvis du vil tilføje brugere til en gruppe fra en CSV-fil, skal du køre følgende PowerShell-script:

Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}

Kopiering af brugere fra en gruppe til en anden

Hvis du ønsker at kopiere alle medlemmer fra en gruppe til en anden gruppe, skal du køre følgende script:

Get-ADGroupMember "Quality" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "QualityControl" -Members $_}

Fjernelse af brugere eller computere fra en gruppe

Hvis du vil fjerne en bruger fra en gruppe, skal du bruge cmdletten Remove-ADGroupMember:

Remove-ADGroupMember -Identity Quality -Members J.Robinson

Hvis du vil fjerne en computerkonto fra en gruppe, skal du angive computerens navn med et dollartegn ($) i slutningen som værdi for parameteren -Members.

Fjernelse af flere brugerkonti fra en gruppe

En nem måde at fjerne flere brugere fra en AD-gruppe på er ved at oprette en CSV-fil med listen over brugernavne og derefter fjerne disse brugere fra gruppeobjektet ved hjælp af dette script:

Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}

Fjernelse af en bruger fra alle grupper

For at fjerne en bruger fra alle grupper skal du køre dette script:

Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object { $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}

Bemærk, at brugeren mister alle gruppemedlemsskaber undtagen “Domænebrugere”, som kan fjernes manuelt, hvis det er nødvendigt.

Rapportering om Active Directory-grupper

Nu da vi ved, hvordan vi kan udføre mange almindelige Active Directory-administrationsopgaver vedrørende grupper ved hjælp af PowerShell, skal vi se, hvordan vi kan rapportere om, hvilke grupper der findes i AD:

For at få en liste over alle grupper i AD skal du bruge nedenstående script:

Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory

Selvfølgelig vil du også gennemgå AD-gruppemedlemmer og AD-gruppemedlemskabsændringer. Her er links til instruktioner til udførelse af disse mere komplekse opgaver:

  • Sådan overvåger du ændringer i Active Directory-gruppemedlemskab
  • Sådan får du rapporter om AD-brugergruppemedlemskab
  • Sådan eksporterer du medlemmer af en bestemt AD-gruppe
  • Håndtering af OU’er og flytning af deres objekter med PowerShell

Konklusion

Nu har du lært, hvordan du administrerer grupper og gruppemedlemskab i Active Directory ved hjælp af PowerShell-scripts, kan du prøve at udføre nogle af gruppestyringsopgaverne selv. Vær dog forsigtig, og glem ikke at aktivere funktionen Active Directory-papirkurv, så du nemt kan rulle dine ændringer tilbage, hvis noget går galt. Husk, at ADUC MMC-snap-in’en er god til at administrere grupper og gruppemedlemskab, men PowerShell er meget bedre til at administrere grupper i bulk.

Jeff er direktør for Global Solutions Engineering hos Netwrix. Han er en mangeårig Netwrix-blogger, taler og oplægsholder. På Netwrix-bloggen deler Jeff lifehacks, tips og tricks, der kan forbedre din systemadministrationsoplevelse markant.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.