Jump to content

Verteiler rekursiv abfragen


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

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe folgendes Problem


wir benötigen eine Auswertung, von

verteilern und deren Berechtete user(mit Displaynamen)


istzustand:

verteiler 1
verteiler 2
verteiler 3
verteiler 4

verteiler 3 n 4 hat wieder verteiler und eine ebene auch noch verteiler, erst dann komemn die Members

 

destination der Verteiler
OUeasycredit.intern/Admin/OPFWew/ExSrv2/MSG011/Groups/

eine komplette auswertung über die OU ist auch sinfreii, da nur einige verteiler abgefragt werden sollen (evtl mit einem csv-imprtFile)

ich habe händisch folgendes gemacht:
Get-DistributionGroup -Identity "Verteiler 1" | Get-DistributionGroupMember|ft displayname

geht ist aber mühsam, kann mir jmd von Euch hier via PS Script (Schleife) weiterhelfen?

danke

 

 

 

Geschrieben

Ich habe so was mit AD Gruppen gemacht:

function Recurse-AdGroup ($group) {
    if((@(try{Get-ADGroup $group}catch{}).count) -gt 0){
        foreach($users in (Get-ADGroupMember $group)){
            Recurse-AdGroup $users.SamAccountName
        }
    }else{
        return $group
    }
}
 $users = Recurse-AdGroup $group

Geschrieben (bearbeitet)

weil ich KEINE Abfrage auf die komplette OU mache sonder nur xy :)

 

wie setzte ich dukels Lösung um

muss ich das variablen definieren?

bin nicht wirklich firm in sachen schleifen :)

bearbeitet von karlldall
Geschrieben

Was willst Du jetzt hören?

 

Schleifen und Rekursion sind die Grundlage JEDER Scripting-Sprache. Wenn Dir diese Grundlage fehlt, dass wird dann erst aus Objekten, Attributen, Pipeline, usw. in der PowerShell?

 

Auch das Lesen von Scripten ist eine Grundbedienung. In Dukels Script ist nichts mit OU oder so. Du muss lediglich die Gruppe übergeben und bekommst die User rekursiv zurück. Wie er schreibt:

 

$users = Recurse-AdGroup $group

 

$group ist die Gruppe in $users stehen danach die Benutzer (genaugenommen der Anmeldename der Benutzer).

Geschrieben

Ich habs wie folgt gelöst.


$verteiler =  get-content verteiler.csv

foreach ($verteiler in $verteiler)
{
write-host $verteiler
Get-ADGroupMember "$verteiler" -Recursive | Get-ADUser -properties * | ft displayName,Name
}

geht rekursiv, aber kann nur Verteiler abfragen, keine SecurityGroups <-- wie kann ich das cmdlet umbauen, dass auch "SecurityGroups" abgefragt werden.

 

Get-DistributionGroup -Identity "AllePartnerbankenbetreuerDE" | Get-DistributionGroupMember |ft displayname,SamAccountName

kann verteiler & security Groups, geht aber nicht rekursiv

 

@ Robert hast du eine Idee?

Geschrieben (bearbeitet)

Sorry, ich muss auch mal arbeiten. ;)

 

geht rekursiv, aber kann nur Verteiler abfragen, keine SecurityGroups <-- wie kann ich das cmdlet umbauen, dass auch "SecurityGroups" abgefragt werden.

 

Kann ich nicht nachvollziehen. Geht bei mir problemlos:

 

[PS] C:\>Get-ADGroupMember "CN=Organization Management,OU=Microsoft Exchange Security Groups,DC=sm-rw,DC=local" -recursive | ft Name,ObjectClassName                                                        ObjectClass
----                                                        -----------
Administrator                                               user
Robert Wille                                                user
SERVER02                                                    computer
[PS] C:\>Get-ADGroupMember "CN=Organization Management,OU=Microsoft Exchange Security Groups,DC=sm-rw,DC=local" -Recursive | Get-ADUser -properties * | ft displayName,NamedisplayName                                                 Name
-----------                                                 ----
Administrator                                               Administrator
Robert Wille                                                Robert Wille
Get-ADUser : Unter "DC=sm-rw,DC=local" kann kein Objekt mit der ID "CN=SERVER02,CN=Computers,DC=sm-rw,DC=local" gefunde
n werden.
Bei Zeile:1 Zeichen:127
+ Get-ADGroupMember "CN=Organization Management,OU=Microsoft Exchange Security Groups,DC=sm-rw,DC=local" -Recursive | G
et-ADUser <<<<  -properties * | ft displayName,Name
    + CategoryInfo          : ObjectNotFound: (CN=SERVER02,CN=...=sm-rw,DC=local:ADUser) [Get-ADUser], ADIdentityNotFo
   undException
    + FullyQualifiedErrorId : Unter "DC=sm-rw,DC=local" kann kein Objekt mit der ID "CN=SERVER02,CN=Computers,DC=sm-rw
   ,DC=local" gefunden werden.,Microsoft.ActiveDirectory.Management.Commands.GetADUser

 

 

Der Fehler im zweiten Bild ist verständlich, da das ein Computer ist und kein User. Die Gruppe "Organization Management" ist eine Sicherheitsgruppe. Hätte mich auch sehr gewundert, dass Get-ADGroupMember keine Sicherheitsgruppen kann, denn das ist ja ein AD-CMDLET.

bearbeitet von RobertWi
Geschrieben


danke für deine Mühe,

 

Get-ADGroupMember "AlleMitarbeiterInnenITP" -Recursive | Get-ADUser -properties * | ft displayName,Name

 ""AlleMitarbeiterInnenITP = Mail  Universal Security Group""


Get-ADGroupMember : Cannot find an object with identity: 'AlleMitarbeiterInnenITP' under: 'DC=easycredit,DC=intern'.
At line:1 char:18
+ Get-ADGroupMember <<<<  "AlleMitarbeiterInnenITP" -Recursive | Get-ADUser -properties * | ft displayName,Name
    + CategoryInfo          : ObjectNotFound: (AlleMitarbeiterInnenITP:ADGroup) [Get-ADGroupMember], ADIdentityNotFoun
   dException
    + FullyQualifiedErrorId : Cannot find an object with identity: 'AlleMitarbeiterInnenITP' under: 'DC=easycredit,DC=
   intern'.,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

Get-ADGroupMember "Mail Universal Distribution group" -Recursive | Get-ADUser -properties * | ft displayName,Name
 --> da klappt aber NICHT mit Securitiy Gruppen"

Geschrieben

Moin,

 

wie gesagt, funktioniert problemlos:

 

PS C:\> 'test1','test2' | Get-ADGroup | ft Name,Group* -AutoSizeName  GroupCategory GroupScope
----  ------------- ----------
Test1  Distribution  Universal
Test2      Security  Universal PS C:\>'test1','test2' | Get-DistributionGroup | ft Name,Group* -autosizeName                   GroupType
----                   ---------
Test1                  Universal
Test2 Universal, SecurityEnabled PS C:\> 'test1' | Get-ADGroupMember -Recursive | Get-ADUser -properties * | ft displayName,NamedisplayName                                                 Name
-----------                                                 ----
BeXXX, MYYY                                                 mbeXXX
PS C:\> 'test2' | Get-ADGroupMember -Recursive | Get-ADUser -properties * | ft displayName,NamedisplayName                                                 Name
-----------                                                 ----
BeXXX, MYYY                                                 mbeXXX

 

test1 ist eine "Distribution  Universal", test2 ist "Security  Universal" und beide sind Mail-aktiviert.

 

Aus Deiner Fehlermeldung würde ich lesen, dass es die Gruppe "AlleMitarbeiterInnenITP" (grr..... grausige Verhunzung der deutschen Sprache) bei Dir nicht gibt.


Was sagt denn

 

Get-ADGroup "AlleMitarbeiterInnenITP" | ft Name,Group* -AutoSize

 

Alternativ kannst Du das auch mit dem DN probieren.

Geschrieben

haha, habs mir nocheinmal genauer angesehen.
du hast Recht, das cmdlet, kann auch Securty Groups abfragen.
mein Fehler/ Problem war, dass ich auf den Alias losgeh ... in meinem Fall war der Alias/ Displayname nicht der, der als eMailadresse hinterlegt war, d.h. mein AD Objekt/ security Gruppe wurde iwann mal umbenannt ...

danke

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...