Jump to content
Ben94

AD-Abfrage per Powershell

Recommended Posts

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

Edited by Ben94

Share this post


Link to post
Share on other sites

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 

 

Share this post


Link to post
Share on other sites
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.

 

 

Share this post


Link to post
Share on other sites

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.

Edited by BOfH_666
Orthographie korrigiert

Share this post


Link to post
Share on other sites

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.

 

Edited by Ben94

Share this post


Link to post
Share on other sites
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.  ;-)

Share this post


Link to post
Share on other sites
vor 1 Minute schrieb Ben94:

Ich danke dir :grins1: ich wurde ins kalte Wasser geschmissen aber mit deinen Tipps bekomme ich das hin.

Wenn Du wieder an Land gepaddelt bist, fragst Du Deinen Chef nach einem "Schwimmkurs"!!  ;-):aha2::aetsch2:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...