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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 344000
Url: https://administrator.de/forum/powershell-automatisierte-loeschung-von-gruppenmitgliedschaften-bei-verschieben-in-ou-344000.html
Ausgedruckt am: 23.12.2024 um 00:12 Uhr
4 Kommentare
Neuester Kommentar
Hi,
kurz eingrätschen
E.
kurz eingrätschen
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.
Müsste es nicht lauten ...?
Und davon würde ich ableiten
Get-ADPrincipalGroupMembership -Identity USERNAME | % {Remove-ADPrincipalGroupMembership -Identity USERNAME -MemberOf $_}
Get-ADuser | ForEach {
$User = $_.Name
Get-ADPrincipalGroupMembership -Identity $User | % {Remove-ADPrincipalGroupMembership -Identity $User -MemberOf $_}
}
Servus,
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:
Aussehen könnte das dann z.B. so
(Namen der DummyGruppe und den DN der OU anpassen)
Soll es nur das reine Löschen der zusätzlichen Gruppen sein ohne eine neue primäre Gruppe zu setzen, reicht folgender Einzeiler
So long ...
Grüße Uwe
Zitat von @emeriks:
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.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.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