Hoe u AD-groepslidmaatschappen naar een andere gebruiker kunt kopiëren met PowerShell

Bij het beheren van Active Directory, vooral in grotere omgevingen, is het vaak nodig om groepslidmaatschappen van de ene gebruiker naar de andere te kopiëren – bijvoorbeeld bij het inwerken van een nieuwe medewerker of het reorganiseren van teams. Dit handmatig doen in de ADUC-console kan erg tijdrovend zijn, met name als iemand lid is van tientallen groepen. Daarom is scripten met PowerShell de ideale oplossing. Het bespaart tijd, vermindert fouten en is over het algemeen efficiënter zodra je het onder de knie hebt. Bovendien, als je met meerdere gebruikers werkt, maakt automatiseren met scripts het leven een stuk eenvoudiger.

In de praktijk is het vrij eenvoudig: haal een lijst met groepen op van de brongebruiker en voeg diezelfde groepen vervolgens toe aan de doelgebruiker. Dit is handig wanneer iemand een afdeling verlaat en zijn of haar vervanger dezelfde toegang nodig heeft. Het belangrijkste is dat uw account de juiste machtigingen heeft om groepslidmaatschappen te wijzigen; anders zal PowerShell een foutmelding geven. Als u deze opdrachten uitvoert, zorg er dan voor dat u bent aangemeld met een domeinbeheerder of met gedelegeerde bevoegdheden.

Windows maakt het natuurlijk soms ingewikkelder dan nodig. Maar als je het eenmaal door hebt, is het een vrij eenvoudig proces. Houd er wel rekening mee dat scripts soms wat aangepast moeten worden, afhankelijk van je omgeving, vooral bij geneste groepen of speciale machtigingen. En als er iets misgaat, kan het controleren van de beveiligingslogboeken van je domeincontroller wellicht meer duidelijkheid geven over waarom een ​​gebruiker niet meer in de juiste groepen verschijnt.

Hoe kopieer je het lidmaatschap van een Active Directory-gebruikersgroep in PowerShell?

Methode 1: Eenvoudig kopiëren van groepslidmaatschappen van de ene gebruiker naar de andere.

Allereerst wilt u weten tot welke groepen uw brongebruiker behoort. Daarvoor gebruikt u de opdracht `Get-ADUser` om alle groepen weer te geven:

$getusergroups = Get-ADUser –Identity jsanti -Properties memberof | Select-Object -ExpandProperty memberof

Met deze opdracht worden alle groepen opgehaald jsantiwaarvan de gebruiker lid is. Let op: in sommige configuraties moet u PowerShell mogelijk als beheerder uitvoeren of de Active Directory-module expliciet importeren Import-Module ActiveDirectoryals deze niet automatisch wordt geladen.

Zodra je die lijst met groepen hebt, kun je deze rechtstreeks doorgeven aan Add-ADGroupMember om de nieuwe gebruiker ( a.adams) aan al die groepen toe te voegen:

$getusergroups | Add-ADGroupMember -Members a.adams -Verbose

Dit is eigenlijk best logisch: je zegt in feite tegen PowerShell: “Neem al deze groepen en voeg a.adamsze eraan toe.” Als alles goed gaat, is de doelgebruiker lid van dezelfde groepen als de brongebruiker. Houd er rekening mee dat je dit waarschijnlijk moet uitvoeren als domeinbeheerder of als een gebruiker met gedelegeerde bevoegdheden om groepslidmaatschappen te wijzigen.

Methode 2: Get-ADPrincipalGroupMembership gebruiken voor meer flexibiliteit

Deze cmdlet is wat universeler: hij werkt voor gebruikers, computers en groepen. Hij is vooral handig als u groepslidmaatschappen wilt kopiëren op basis van het daadwerkelijke ‘lidmaatschap’ van het object, en niet alleen op basis van een lijst met DN-strings van groepen. Zo zou het eruit kunnen zien:

$userSource= "jsanti" $userTarget= "a.adams" $sourceGroups = Get-ADPrincipalGroupMembership -Identity $userSource Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $sourceGroups 

Dit script haalt alle groepen op jsantiwaartoe een gebruiker behoort en voegt deze vervolgens toe a.adamsaan die groepen. Simpel genoeg, toch? Vergeet niet dat de cmdlet Add-ADPrincipalGroupMembership verwacht dat je de array met groepsobjecten uit de vorige opdracht doorgeeft.

Op sommige machines mislukt dit de eerste keer, of krijg je vreemde foutmeldingen, maar meestal is het probleem opgelost door het opnieuw uit te voeren of ervoor te zorgen dat je sessie de juiste rechten heeft.

Methode 3: Een logbestand maken voor verantwoording.

Als je dit vaak doet of gewoon een logboek wilt bijhouden voor controledoeleinden, is het handig om een ​​logbestand te scripten. Hier is een langer script dat groepen kopieert en elke stap vastlegt:

$logfile="c:\LOG\CopyAdGroup.log" $userSource= "jsanti" $userTarget= "a.adams" $Time = Get-Date Add-Content $logfile -Value $Time -Encoding UTF8 Add-Content $logfile -Value "_________________" Add-Content $logfile -Value ("Copying AD groups from $userSource to $userTarget") -Encoding UTF8 $sourceGroups = (Get-ADPrincipalGroupMembership -Identity $userSource).SamAccountName foreach ($group in $sourceGroups) { Add-Content $logfile -Value ("Adding $userTarget to $group") -Encoding UTF8 try { $log = Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $group Add-Content $logfile -Value ("Successfully added to $group") -Encoding UTF8 } catch { Add-Content $logfile -Value ("Error: $($Error[0].Exception. Message)") -Encoding UTF8 continue } } Add-Content $logfile -Value "_________________" 

Dit script genereert logbestanden die later geraadpleegd kunnen worden als er iets vreemds gebeurt. Het is niet perfect, maar het helpt wel om bij te houden wat het script heeft gedaan, vooral in drukke omgevingen.

Extra tips: Monitoring en automatisering

Als je wilt zien wie in welke groepen zit, raadpleeg dan de beveiligingslogboeken op je domeincontroller en zoek naar gebeurtenissen over wijzigingen in groepslidmaatschap. Een andere handige tip is om geplande taken in te stellen die deze scripts periodiek uitvoeren, zodat groepslidmaatschappen gesynchroniseerd blijven zonder dat je dit handmatig hoeft te doen.

Samenvatting

  • Gebruik Get-ADUser of Get-ADPrincipalGroupMembership om gebruikersgroepen weer te geven.
  • Gebruik die lijst als leidraad voor Add-ADGroupMember of Add-ADPrincipalGroupMembership om lidmaatschappen te klonen.
  • Voer scripts uit als een gebruiker met voldoende rechten, meestal een domeinbeheerder.
  • Overweeg om alle wijzigingen vast te leggen voor controledoeleinden.
  • Houd rekening met geneste groepen en speciale machtigingen die de zaken kunnen compliceren.

Samenvatting

Deze aanpak versnelt massale gebruikersupdates en minimaliseert fouten in vergelijking met handmatige klikken in ADUC. Natuurlijk is er in het begin een leercurve, maar als je het eenmaal door hebt, is het een redder in nood als je dit vaak doet. Houd wel de machtigingen in de gaten en lees de handleiding van de cmdlets als er iets vreemds opduikt. Hopelijk helpt dit om de chaos wat te stroomlijnen.