yoshimitsu
Goto Top

PowerShell - Automatisierte Löschung von Gruppenmitgliedschaften bei verschieben in OU

Hallo Community,

ich bin absoluter PowerShell Noob und stehe vor folgender Aufgabe:

Wir verschieben alle User, die bei uns nicht mehr Arbeiten kurz nach ihrem Austritt in eine OU "löschen". Jetzt möchten wir eine Skript erstellen, welches bewirkt, dass alle User, welche sich in dieser OU befinden automatisch alle Gruppenmitgliedschaften (Also im AD "Mitglied von") - einschließlich der Domänenbenutzer - verlieren.

Mit einem einzelnen User hat es so funktioniert:

Get-aduser USERNAME | % {Remove-ADPrincipalGroupMembership -Identity * -MemberOf $_} <---- Das funktioniert allerdings ohne Domänenbenutzer.


Jetzt wäre zum beispiel mein Ansatz, dass ich folgendes miteinander kombiniere:


Get-ADUser -Filter * -SearchBase “OU=X,DC=X,DC=X” | % {Remove-ADPrincipalGroupMembership -Identity * -MemberOf $_} <--- leider funktioniert das nicht


FRAGE:

Wie kann ich es schaffen, dass ich alle User, die in die OU "löschen" verschoben werden alle Mitgliedschaften einschließlich der "Domänen-Benutzer" verlieren.


Vielen Dank vorab face-smile

Content-ID: 344000

Url: https://administrator.de/contentid/344000

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

emeriks
Lösung emeriks 20.07.2017 aktualisiert um 10:34:15 Uhr
Goto Top
Hi,
kurz eingrätschen face-wink
einschließlich der Domänenbenutzer - verlieren.
Das geht nicht so einfach. Jeder Benutzer hat min. eine Mitgliedschaft - jene in der Primärgruppe. Standardmäßig ist das die Gruppe "Domänen-Benutzer". Wenn der Benutzer da auch raus soll, dann musst Du eine Dummy-Gruppe erstellen und diese dem Benutzer als Primärgruppe eintragen.

E.
emeriks
Lösung emeriks 20.07.2017 um 10:32:36 Uhr
Goto Top
Müsste es nicht lauten ...?
Get-ADPrincipalGroupMembership -Identity USERNAME | % {Remove-ADPrincipalGroupMembership -Identity USERNAME -MemberOf $_}
Und davon würde ich ableiten
Get-ADuser | ForEach {
  $User = $_.Name
  Get-ADPrincipalGroupMembership -Identity $User | % {Remove-ADPrincipalGroupMembership -Identity $User -MemberOf $_}
}
colinardo
Lösung colinardo 20.07.2017 aktualisiert um 11:17:26 Uhr
Goto Top
Servus,
Zitat von @emeriks:
einschließlich der Domänenbenutzer - verlieren.
Das geht nicht so einfach. Jeder Benutzer hat min. eine Mitgliedschaft - jene in der Primärgruppe. Standardmäßig ist das die Gruppe "Domänen-Benutzer". Wenn der Benutzer da auch raus soll, dann musst Du eine Dummy-Gruppe erstellen und diese dem Benutzer als Primärgruppe eintragen.
Dem kann ich mich nur anschließen, ein User akzeptiert keine leere Eigenschaft PrimaryGroup, jeder User muss eine besitzen, per Default ist das die mit der ID 513.
Also muss dem User wie gesagt eine Dummy-Gruppe zugewiesen werden wenn man es unbedingt so machen möchte. Warum Ihr die User nicht einfach deaktiviert bleibt euer Geheimnis.
Naja, wenn Ihr diesen Weg trotzdem verfolgen wollt, ist der Ablauf wie folgt:
  • User in der Dummy-Gruppe zum Mitglied machen
  • Primäre Gruppe des Users auf die Dummy-Gruppe setzen
  • Sonstige Gruppen entfernen

Aussehen könnte das dann z.B. so
(Namen der DummyGruppe und den DN der OU anpassen)
# Dummy Gruppe
$dummygroup = Get-ADGroup "DummyGruppe" -Properties PrimaryGroupToken  

Get-ADUser -Filter * -SearchBase 'OU=XXX,DC=XXX,DC=XX' -Properties MemberOf,PrimaryGroupId | ?{$_.PrimaryGroupId -ne $dummygroup.PrimaryGroupToken} | %{  
    # User ist noch nicht Mitglied der Dummy-Gruppe also füge ihn als Mitglied hinzu (nötig damit die Primäre Gruppenmitgliedschaft festgelegt werden kann)
    if ($dummygroup.DistinguishedName -notin $_.MemberOf){
        Add-ADGroupMember $dummygroup -Members $_
    }
    # Setze primäre Gruppe des Users auf die Dummy-Gruppe
    Set-ADUser $_ -Replace @{PrimaryGroupId=$dummygroup.PrimaryGroupToken}
    # Entferne alle sonstigen Gruppenmitgliedschaften
    Remove-ADPrincipalGroupMembership $_ -MemberOf (Get-ADUser $_ -Properties MemberOf).MemberOf -Confirm:$false -ErrorAction Ignore
}

Soll es nur das reine Löschen der zusätzlichen Gruppen sein ohne eine neue primäre Gruppe zu setzen, reicht folgender Einzeiler
Get-ADUser -Filter * -SearchBase 'OU=XXX,DC=XXX,DC=XX' -Properties MemberOf | %{Remove-ADPrincipalGroupMembership $_ -MemberOf $_.MemberOf -Confirm:$false}  

So long ...
Grüße Uwe
Yoshimitsu
Yoshimitsu 20.07.2017 um 12:35:14 Uhr
Goto Top
Ihr seid super, vielen Dank für eure Hilfe face-smile


Ich werde auch die Variante mit den Dummy Gruppen ausprobieren, weil wir das auch gebrauchen können face-smile

Viele Grüße
Yoshimitsu