"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PowerShell] Email-Group-Memberships of ADUser

daisho 14.07.2022 - 08:06 3032 7
Posts

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19585
Hat von euch zufällig schon jemand ein PowerShell Script (oder Befehl) dazu herumliegen?
[in welchen Email-Verteilern ist User XYZ]
Optional schreibt's das gleich in ein CSV oder so zum auswerten.

Ich vermute man braucht dazu die Exchange Management Shell Tools, und es geht vermutlich um "Distribution Groups"?
Wenn nicht werde ich mir das bei Gelegenheit mal Googlen.

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19585
Hm, man muss dafür scheinbar in eine lokale Exchange Management Shell oder in eine solche Session.
Wenn ich das mit Office365.com direkt mache ($Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ ...) dann ist eine Suche via Get-Distribution... commands oder gar foreach Schleifen super langsam und wird wohl nie enden bzw. nicht in einem vernünftigem Zeitrahmen.

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3457
Theoretisch gehts auch ohne einer Exchange Management Shell, kommt aber auch aufs Environment drauf an und ob die AD user wirklich brav in Distributiongroups im AD sind. Bin grad im Urlaub, wenn bis Montag keiner schneller is kann ich dir a fertiges Codesnippet posten, das ich auch für sowas hab.

hynk

Super Moderator
like totally ambivalent
Avatar
Registered: Apr 2003
Location: Linz
Posts: 10906
Du kannst dieses Modul verwenden um auch aus der lokalen Shell auf den Online Exchange zu kommen:
https://docs.microsoft.com/en-us/po...iew=exchange-ps

Vielleicht funktionierts mit dem Snippet von hier:
Code:
$Mailbox=get-Mailbox [email]user@domain.com[/email]
$DN=$mailbox.DistinguishedName
$Filter = "Members -like ""$DN"""
Get-DistributionGroup -ResultSize Unlimited -Filter $Filter

Zum ausgeben in ein File kannst es ja dreckig über Get-Transcript machen, wenns dir der Inhalt der File nicht wichtig ist.
Ansonsten über Select-Object und Export-Csv.

Das Script hier geht zwar in eine andere Richtung von der Anforderung her, aber könnte man denke ich für deine Zwecke missbrauchen.

Hab nichts zur Verfügung wo ich dir das gerade testen könnte ;)

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19585
Das hat ziemlich gut geklappt mit dem EOM tool:
Install-Module ExchangeOnlineManagement
Connect-ExchangeOnline

Die Liste zeigt mir allerdings sehr wenige Einträge an. Für meinen eigenen Account stehen da 4 Einträge, habe lt. Outlook Client (als "Memberships") allerdings 12 (und da sind auch welche dabei die nicht verschachtelt sind sondern wo ich direkt in der Gruppe stehe.

/Edit: Ich probiere mal das zweite Script, das checked scheinbar alle SMTP Adressen der Groups.
Bearbeitet von daisho am 14.07.2022, 10:57

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Es ist übrigens eine durchaus wertvolle Information, ob eine DistributionGroup nur das, oder auch eine MailUniversalSecurityGroup ist.
Dank -RecipientType im Script von Ali Tajran ist das eh gut abgedeckt.
Bearbeitet von mr.nice. am 14.07.2022, 11:24

hynk

Super Moderator
like totally ambivalent
Avatar
Registered: Apr 2003
Location: Linz
Posts: 10906
Ich würd auch auf eine Verschachtelung tippn, aber wenns das nicht ist, dann keine Ahnung. Möglicherweise andere Gruppentypen?

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19585
Das zweite Script ist schon mal super weil es einfach alles durchforstet und ein CSV erstellt mit sämtlichen Einträgen.
Leider zeigt das bei mir z.B. auch nur dieselben 4 Einträge an. Vielleicht sind die anderen "Memberships" keine DistributionGroups, idk. Vielleicht weiß die IT da mehr, ich hab da leider nicht all zu viel Zeit zum reinstecken (ist nicht für mich oder meine Arbeit).
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz