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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1812466801
Url: https://administrator.de/contentid/1812466801
Ausgedruckt am: 13.11.2024 um 07:11 Uhr
18 Kommentare
Neuester Kommentar
Moin,
ich hab basierend auf dem Link von @LauneBaer das ganze für mich wie folgt gelöst:
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
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
Servus,
Grüße Uwe
(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
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 .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
Zitat von @colinardo:
Servus,
Grüße Uwe
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
Hi Uwe, also bei mir passiert da gar nix. Er erstellt eine Datei, die ist aber leer.
Zitat von @Doskias:
Moin,
ich hab basierend auf dem Link von @LauneBaer das ganze für mich wie folgt gelöst:
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
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.
Servus @ollex78, willkommen auf Administrator.de!
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
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.Hi Uwe, also bei mir passiert da gar nix. Er erstellt eine Datei, die ist aber leer.
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
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?
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?
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
Nur zur Anzeige auf der Konsole:
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.
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
(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
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.
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
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
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.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?
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
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?
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 .
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.
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.