deaxx84
Goto Top

Auflistung Postfach Berechtigungen

Hallo in die Runde,
ich suche einen PowerShell Befehl, womit ich mir von allen Mitarbeitern in einer Domäne die jeweiligen berechtigten Postfächern listen kann.

z.B.

Max hat Postfach1,2,3, Verteiler 1,2,3 etc.

und das am besten als Export,excel tablle

Content-ID: 1812466801

Url: https://administrator.de/contentid/1812466801

Ausgedruckt am: 13.11.2024 um 07:11 Uhr

LauneBaer
LauneBaer 02.02.2022 um 14:17:08 Uhr
Goto Top
Hallo,

schau mal hier: Klick

Grüße
Deaxx84
Deaxx84 02.02.2022 um 14:50:14 Uhr
Goto Top
Danke für den Tip, wenn ich jetzt den letzten Befehl starte, kommt folgende Meldung :
Die Pipeline wird nicht ausgeführt, da bereits eine andere Pipeline ausgeführt wird. Pipelines können nicht
gleichzeitig ausgeführt werden.
+ CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) ,
PSInvalidOperationException
+ FullyQualifiedErrorId : RemotePipelineExecutionFailed
Doskias
Doskias 02.02.2022 aktualisiert um 14:53:18 Uhr
Goto Top
Moin,

ich hab basierend auf dem Link von @LauneBaer das ganze für mich wie folgt gelöst:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn; 
# $Protokoll = "C:\temp\Rechte" 

$AD_User= get-aduser -filter * -Properties * |? DistinguishedName -like "*OU=Deine_OU*"|? msExchRecipientTypeDetails -like "1" |Select-Object samaccountname, UserPrincipalName  

foreach ($AD_Benutzer in $ad_user)
{
write-host $AD_Benutzer.UserPrincipalName >> c:\temp\Exchange-Rechte.txt
$rechte=Get-MailboxPermission ($AD_Benutzer.samaccountname) | ? user -NotLike "domain\ex*" | ? user -NotLike "domain\admin*" | ? user -NotLike "domain\orga*" | ? user -NotLike "domain\dom*"`  
| ? user -NotLike "domain\public*"|  ? user -NotLike "domain\delegated*" | ? user -NotLike "domain\manage*" |? user -NotLike "nt-aut*" |ft -AutoSize  
if($rechte.length -eq 0)
{
# write-host "kein weiterer Zugriff" >> c:\temp\Exchange-Rechte.txt  
}
else
{
$rechte >> c:\temp\Exchange-Rechte.txt
}
write-host "" >> c:\temp\Exchange-Rechte.txt  
 # pause

Hinterher hast du eine Text-Datei die Auflistet wer welche Berechtigungen auf fremde Postfächer hat, allerdings aus Sicht des Postfaches. Das ganze ist allerdings der Postfachzugriff, nicht gesendet als. Dafür benötigt es eine andere Herangehensweise. Postfächer wo niemand außer dem Besitzer selbst Zugriff hat, werden nicht angezeigt.

Die notlikes In Zeile 9 und 10 müssen ggf. angepasst werden. Sie entfernen Systembenutzer. Sollte aber auch bei dir grob passen, wenn du nicht zufällig Benutzer hast die damit übereinstimmen.

Gruß
Doskias
Deaxx84
Deaxx84 02.02.2022 um 15:22:06 Uhr
Goto Top
Ich brauch halt wirklich nur ein Skript was mir anzeigt, welcher User auf welche Postfächer Zugriff hat und das am besten sortiert.
Doskias
Doskias 02.02.2022 um 15:37:23 Uhr
Goto Top
Ja. Das macht mein Skript. Es zeigt dir welcher User bei welchen Postfach eingetragen ist, wenn es nicht der Besitzer ist. Du kannst das Skript gerne dahingehend verändern, dass auch die Besitzer mit angegeben werden oder die Sortierung ändern. beides kein großes Ding.
colinardo
Lösung colinardo 02.02.2022, aktualisiert am 21.06.2023 um 11:18:09 Uhr
Goto Top
Servus,
(Get-Mailbox -ResultSize unlimited) | Get-MailboxPermission -ResultSize unlimited | ?{!$_.IsInherited -and $_.User.SecurityIdentifier.Value -ne 'S-1-5-10'} | select User,@{n='Mailbox';e={$_.Identity}},@{n='AccessRights';e={$_.AccessRights -join ','}}, Deny | sort User | export-csv .\explicit_mailbox_rights.csv -Delimiter ";" -NoType -Encoding UTF8 -verbose  
Grüße Uwe
Deaxx84
Deaxx84 10.02.2022 um 11:30:47 Uhr
Goto Top
Jetzt bin ich verwirrt, mit welchem Befehl, kann ich mir jetzt alle Postfächer von allen Mitarbeiter anzeigen lassen bzw. wo die Mitarbeiter alle berechtigt sind drauf
colinardo
colinardo 10.02.2022 aktualisiert um 11:39:46 Uhr
Goto Top
Zitat von @Deaxx84:

Jetzt bin ich verwirrt, mit welchem Befehl, kann ich mir jetzt alle Postfächer von allen Mitarbeiter anzeigen lassen bzw. wo die Mitarbeiter alle berechtigt sind drauf
? Du wiederholst dich. Steht doch eins über deinem letzten comment. Wohl noch keinen Kaffee gehabt face-wink.
ollex78
ollex78 21.06.2023 um 08:07:50 Uhr
Goto Top
Zitat von @colinardo:

Servus,
(Get-Mailbox -ResultSize unlimited) | Get-MailboxPermission -ResultSize unlimited | ?{!$_.IsInherited -and $_.User.SecurityIdentifier.Value -ne 'S-1-5-10'} | select User,@{n='Mailbox';e={$_.Identity.Name}},@{n='AccessRights';e={$_.AccessRights -join ','}},Deny | sort User | export-csv .\explicit_mailbox_rights.csv -Delimiter ";" -NoType -Encoding UTF8 -verbose  
Grüße Uwe

Hi Uwe, also bei mir passiert da gar nix. Er erstellt eine Datei, die ist aber leer.
ollex78
ollex78 21.06.2023 um 08:08:32 Uhr
Goto Top
Zitat von @Doskias:

Moin,

ich hab basierend auf dem Link von @LauneBaer das ganze für mich wie folgt gelöst:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn; 
# $Protokoll = "C:\temp\Rechte" 

$AD_User= get-aduser -filter * -Properties * |? DistinguishedName -like "*OU=Deine_OU*"|? msExchRecipientTypeDetails -like "1" |Select-Object samaccountname, UserPrincipalName  

foreach ($AD_Benutzer in $ad_user)
{
write-host $AD_Benutzer.UserPrincipalName >> c:\temp\Exchange-Rechte.txt
$rechte=Get-MailboxPermission ($AD_Benutzer.samaccountname) | ? user -NotLike "domain\ex*" | ? user -NotLike "domain\admin*" | ? user -NotLike "domain\orga*" | ? user -NotLike "domain\dom*"`  
| ? user -NotLike "domain\public*"|  ? user -NotLike "domain\delegated*" | ? user -NotLike "domain\manage*" |? user -NotLike "nt-aut*" |ft -AutoSize  
if($rechte.length -eq 0)
{
# write-host "kein weiterer Zugriff" >> c:\temp\Exchange-Rechte.txt  
}
else
{
$rechte >> c:\temp\Exchange-Rechte.txt
}
write-host "" >> c:\temp\Exchange-Rechte.txt  
 # pause

Hinterher hast du eine Text-Datei die Auflistet wer welche Berechtigungen auf fremde Postfächer hat, allerdings aus Sicht des Postfaches. Das ganze ist allerdings der Postfachzugriff, nicht gesendet als. Dafür benötigt es eine andere Herangehensweise. Postfächer wo niemand außer dem Besitzer selbst Zugriff hat, werden nicht angezeigt.

Die notlikes In Zeile 9 und 10 müssen ggf. angepasst werden. Sie entfernen Systembenutzer. Sollte aber auch bei dir grob passen, wenn du nicht zufällig Benutzer hast die damit übereinstimmen.

Gruß
Doskias

Hallo,

habe das mal ausprobiert, da bekomme ich permanent Fehler das eine Pipe nicht geschlossen ist, hab es daher nicht testen können. Vielleicht kannst Du ja kurz helfen.
colinardo
colinardo 21.06.2023 aktualisiert um 09:12:44 Uhr
Goto Top
Servus @ollex78, willkommen auf Administrator.de!
Zitat von @ollex78:

Hi Uwe, also bei mir passiert da gar nix. Er erstellt eine Datei, die ist aber leer.
Das listet nur explizit direkt auf die Mailbox vergebene Berechtigungen, keine von oben vererbten Rechte (siehe where-object), gibt es die nicht gibt es auch keinen Output.
Du kannst das where-object (?{}) In der Pipeline mal weg lassen dann werden auch vererbte Berechtigungen gelistet.
Ohne Umgebungs-Details etc.pp schwierig dir zu helfen, denn ein schnödes "funktioniert nicht" hilft hier keinem weiter, klappt nämlich im Test einwandfrei auf einem EX 2019 in der Management Shell.

Grüße Uwe

p.s. Da du hier neu bist, bitte in Zukunft mehrfache Kommentare/Zitate in einem einzigen Kommentar zusammenfassen. Merci.
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
ollex78
ollex78 21.06.2023 um 10:53:25 Uhr
Goto Top
Hi danke, also zu meinen zwei Dingen.

Zum Script von @Doskias wie ich schrieb, er will eine Pipe schließen, selbst der debugger findet sie aber nicht wo sie hingehört. hatte sie hinter das Zeile 11 if gesetzt, kommt aber mnächste Fehlermeldung. Mittlerweile hab ich den Fehler gefunden und die schließende Pipe in Zeile 10 hinter das Autosize gesetzt und jetzt geht es, aber die Datei bleibt nach wie vor leer. Und ich verstehe nicht wieso.

Zweite Frage war, gibt keine Fehlermeldung aus. Die Datei wird erstellt und bleibt leer.

Alles auf einem EX2016

Tatsaächlich bräuchte ich eine Auflistung aller FuPos inklus. Usern. Klar ich könnte über die ECP gehen, aber das reicht dem Antragsteller nicht, deswegen muss ich das ausführlicher tun. Kann da jemand helfen?
colinardo
colinardo 21.06.2023 aktualisiert um 11:17:47 Uhr
Goto Top
Wie schon geschrieben lass das Where-Object weg dann werden sämtliche auch vererbte und System-Berechtigungen gelistet
Für den Export in eine CSV
(Get-Mailbox -ResultSize unlimited) | Get-MailboxPermission -ResultSize unlimited | select User,@{n='Mailbox';e={$_.Identity}},@{n='AccessRights';e={$_.AccessRights -join ','}},Deny | sort User | export-csv .\mailbox_rights.csv -Delimiter ";" -NoType -Encoding UTF8  
Nur zur Anzeige auf der Konsole:
(Get-Mailbox -ResultSize unlimited) | Get-MailboxPermission -ResultSize unlimited | select User,@{n='Mailbox';e={$_.Identity}},@{n='AccessRights';e={$_.AccessRights -join ','}}, Deny | sort User | format-table -AutoSize -Wrap  
Gibt das bei dir nichts aus stimmt auf eurem System etwas nicht.

Von wo aus du das ganze ausführst hast du auch noch nicht erwähnt, auf dem EX selbst in der Management Shell oder von Remote per PSSession usw.
Die Session sollte wenn per Remote mit voller Serialization arbeiten also SerializationLevel=Full damit sämtliche Objekte vorhanden bleiben.
ollex78
ollex78 21.06.2023 aktualisiert um 14:34:03 Uhr
Goto Top
Okay, super.

Ja ich führe es auf unserem Exchange in der Exchange management Shell aus. Sorry.

Export hat jetzt mit den beiden geklappt jedoch nicht aus der OU heraus die ich benötige die hat er ausgelassen. Bedeutet das, da gibt es keine FuPos oder hat er etwas ausgelassen?

Die Aufgabe wäre tatsächlich, die Erstellung einer Tabelle zu den einzelnen FuPos und deren zugewiesener Nutzer
colinardo
colinardo 21.06.2023 aktualisiert um 14:55:44 Uhr
Goto Top
Zitat von @ollex78:
Export hat jetzt mit den beiden geklappt jedoch nicht aus der OU heraus die ich benötige die hat er ausgelassen. Bedeutet das, da gibt es keine FuPos oder hat er etwas ausgelassen?
Mit dem Befehl werden sämtliche Mailboxen der Organisation aus allen aktiven Datenbanken egal welchen Typs (User,Shared, Ressource,...) erfasst, die es in der Exchange Organisation gibt. Wenn die nicht aufgelistet werden die dir fehlen, fehlen dir womöglich die Zugriffsrechte zum Abfragen dieser Mailboxen.
Das kannst du prüfen indem du mal schaust ob er dir die Mailboxen der jeweiligen OU auflistet
Get-Mailbox -OrganizationalUnit "OU=Test,DC=Domain,DC=tld" -ResultSize unlimited  
Werden die gesuchten Mailboxen gefunden dann Versuche von diesen die Permissions abzufragen
Get-Mailbox -OrganizationalUnit "OU=Test,DC=Domain,DC=tld" -ResultSize unlimited | Get-MailboxPermission -ResultSize unlimited  

p.s. nur zur Sicherheit, hier geht es um eine rein OnPremise Umgebung, kein Hybrid Zeug mit M365?
ollex78
ollex78 21.06.2023 um 15:51:26 Uhr
Goto Top
Hybrid mit M365? Also unser ECP ist browserbasiert, was wohl M365 bedeutet oder?
colinardo
colinardo 21.06.2023 aktualisiert um 17:48:15 Uhr
Goto Top
Zitat von @ollex78:

Hybrid mit M365? Also unser ECP ist browserbasiert, was wohl M365 bedeutet oder?
Nein. Die ECP also die GUI existiert sowohl für OnPremise Systeme als auch für M365, Schau doch mal auf die URL dann weist du es, wenn diese mit https://admin.exchange.microsoft.com anfängt dann ist es Exchange Online/M365 face-smile.
Bist du ehrlich der Admin des Exchange? Denn so eine Frage sollte dieser eigentlich im Schlaf beantworten können 🙃.

p.s. Wenn noch Fragen sind bitte einen neuen Thread oder PN schreiben damit der Thread des TO hier nicht weiter zugemüllt wird.
ollex78
ollex78 22.06.2023 um 07:42:17 Uhr
Goto Top
Ja seit 3 Wochen und die Übergabe war so semi. Deswegen muss ich mich selber einarbeiten.