Jump to content

AD-Abfrage per Powershell


Direkt zur Lösung Gelöst von BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

Ich möchte mit dem Skript herausfinden, welche Mitglieder der Mitgliedergruppe in Gruppe 1 ist. Jedoch sind in der Gruppe auch User mit Gruppe2. Diese sollen in der Ausgabe nicht aufgezählt werden.

 

Vielleicht kann mir hier jemand helfen.

 

Import-Module ActiveDirectory

#Abfrage der Mitgliedergruppe
$Gruppe1 = Get-ADGroupMember -Identity "Gruppe1" | Get-ADGroup -Properties * | Select-Object -ExpandProperty name 
$Gruppe1
#Ende der Abfrage


#Abfrage der User in den Mitgliedergruppen
$Gruppe1User = foreach ($element in $Gruppe1) {
    Get-ADGroupMember -Identity $element  | 
        Get-Aduser -Properties name | 
            Select-Object name
}
$Gruppe1User
$Gruppe1User | Export-Csv -Path .csv -NoTypeInformation
#Ende der Abfrage

#Abfrage der User in den Mitgliedergruppen und Gruppe2
$UserinGruppe1mitGruppe2 = foreach ($element in $Gruppe1) {
    Get-ADGroupMember -Identity "Gruppe2" |
        Select-Object name
}
$UserinGruppe1mit Gruppe2
#Ende der Abfrage

Danke im Vorraus

Ben

bearbeitet von Ben94
Link zu diesem Kommentar
  • Beste Lösung

Ben,

Als Einstieg hier mal ein Code-Schnipsel, der Dir die Unterschiede der Mitglieder der Gruppen auflistet. Schau Dir die Ausgabe mal an, lies mal die Hilfe für Compare-Object und spiel ein bissl mit den Parametern ....  z.B. tauschst Du mal RefenceObject gegen DifferenceObject oder Du hängst ein -IncludeEqual an und vergleichst die Ausgabe ...

$Gruppe1Liste = Get-ADGroupMember -Identity 'Gruppe1'
$Gruppe2Liste = Get-ADGroupMember -Identity 'Gruppe2'
Compare-Object -ReferenceObject $Gruppe1Liste -DifferenceObject $Gruppe2Liste -Property Name 

 

Link zu diesem Kommentar
vor 33 Minuten schrieb BOfH_666:

$Gruppe1Liste -DifferenceObject $Gruppe2Liste -Property Name

Danke dir für die schnelle Anwort. Damit kann ich auf jeden Fall arbeiten. :thumb1:

 

 

Zum besseren Verständnis hier einmal eine kleine Aufstellung meines Ad's:

 

Usergruppe    Usergruppe1      Usergruppe2 (...)

 User1             User1.1               User1.2

 User2             User2.1               User2.2

(...)                 (...)                      (...)

 

Dann habe ich noch 2 Gruppen, welche die Berechtigung der User steuern.

z.B. Gruppe1 erlaubt

      Gruppe2 verbietet

 

Ich habe nun alle Usergruppen mit Gruppe1 ausgelesen und die darin vorhandenden Mitglieder in einem Array gespeichert.

Nun haben aber manche der Mitglieder auch Gruppe2. Diese müssen herausgefiltert werden, damit ich alle Mitglieder der Gruppe1 habe, in welchen auch die Berechtigung von Gruppe1 greift.

 

 

Link zu diesem Kommentar

Hmmm ... unabhängig davon, dass ich jetzt nicht weiß, ob hier noch eine Frage enthalten ist ....

 

Wenn ich lese "Gruppe2 verbietet"  ... Du weißt, dass eine nicht erteilte (Lese-)Berechtigung quasi einem "Verbot" gleichkommt, oder?  Nach meiner Erfahrung erzeugen explizit vergebene Verweigern-Berechtigungen gerne mal ungewollte und schwer zu diagnostizierende Nebenwirkungen.

bearbeitet von BOfH_666
Orthographie korrigiert
Link zu diesem Kommentar

Eine kleine Frage habe ich noch. Der Vergleich war erfolgreich, sodass ich aus der Ausgabe händlisch eine Seite herausfiltern konnte. Die Frage wäre, wie es möglich ist, Alle Einträge mit => in der Ausgabe in einen neune Array einzutragen.

 

Die Berechtigungen sind so gesetzt, da Gruppe 1 auf die Usergruppen zugeordnet ist, sodass immer alle Mitglieder, deren Usergruppe Gruppe1 zugeornet ist, diese spezielle Berechtigung haben.

Nur wenige User bekommen diese entzogen indem direkt auf dem User Gruppe2 Zugeordnet wurde.

 

bearbeitet von Ben94
Link zu diesem Kommentar
vor 2 Minuten schrieb Ben94:

Eine kleine Frage habe ich noch. Der Vergleich war erfolgreich, sodass ich aus der Ausgabe händlisch eine Seite herausfiltern konnte. Die Frage wäre, wie es möglich ist, Alle Einträge mit => in der Ausgabe in einen neune Array

einzutragen.

Das macht Powershell für Dich, wenn Du nett drum bittest ... ;-)

$NeuesArray = Compare-Object -ReferenceObject $Gruppe1Liste -DifferenceObject $Gruppe2Liste -Property Name |
    Where-Object {$_.SideIndicator -eq '=>'}

Ich würde Dir empfehlen, Dir die Grundlagen von Powershell strukturiert anzueignen. Vielelicht mit einem guten Buch oder mit einem Online-Video-Tutorial oder wenn Dir Dein Chef ein Training bezahlt, am besten das ... ;-)

 

vor 2 Minuten schrieb Ben94:

 

Die Berechtigungen sind so gesetzt, da Gruppe 1 auf die Usergruppe zugeornet ist, sodass alle Mitglieder alle Berechtigungen haben.

Nur wenige User bekommen diese entzogen indem direkt auf dem User Gruppe2 Zugeordnet wurde.

 

Das kommentiere ich jetzt mal gar nicht ... wenn's funktioniert, ist das ja schön.  ;-)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...