Powershell Get-Mailboxpermission mit Benutzer vor und nachname
Guten Morgen,
ich muss bei SharedMailboxen regelmäßig die "FullAccess" Berechtigungen auslesen und diese dann per Excel an die jeweilige Abteilung mailen.
Dazu nutze ich folgendes Skript
Das geht soweit auch ganz sauber.
Mein Problem ist nur, dass die Spalte User, dann den Anmeldenamen enthält, welcher aber eine fordlaufende Nummer ist Domain\123456
Damit kann derjenige, welcher die Berechtigungen prüfen soll nicht so wirklich viel machen.
Ich muss irgendwie den Usernamen gegen den User selbst abprüfen und eine Spalte mit Vor und Nachname mit reinbekommen.
Ich weiß aber nicht wie ich das da rein bekomme.
Hat da jemand von Euch eine Idee zu?
Vielen Dank
ich muss bei SharedMailboxen regelmäßig die "FullAccess" Berechtigungen auslesen und diese dann per Excel an die jeweilige Abteilung mailen.
Dazu nutze ich folgendes Skript
$user = Get-Mailbox "mailbox" | Get-mailboxPermission | Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "nt-autorität\selbst") -and -not ($_.User -like "$nbdomain\Domänen-Admins")-and -not ($_.User -like "$nbdomain\Organisations-Admins") -and -not ($_.User -like "$nbdomain\Organization Management") -and -not ($_.User -like "$nbdomain\Administrator") -and -not ($_.User -like "$nbdomain\Exchange Servers") -and -not ($_.User -like "$nbdomain\Exchange Trusted Subsystem") -and -not ($_.User -like "nt-autorität\system")}
Das geht soweit auch ganz sauber.
Mein Problem ist nur, dass die Spalte User, dann den Anmeldenamen enthält, welcher aber eine fordlaufende Nummer ist Domain\123456
Damit kann derjenige, welcher die Berechtigungen prüfen soll nicht so wirklich viel machen.
Ich muss irgendwie den Usernamen gegen den User selbst abprüfen und eine Spalte mit Vor und Nachname mit reinbekommen.
Ich weiß aber nicht wie ich das da rein bekomme.
Hat da jemand von Euch eine Idee zu?
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 657746
Url: https://administrator.de/forum/powershell-get-mailboxpermission-mit-benutzer-vor-und-nachname-657746.html
Ausgedruckt am: 24.12.2024 um 14:12 Uhr
9 Kommentare
Neuester Kommentar
Moin
gibt dir die hinterlegten Daten des User aus dem AD wieder, darunter auch Vor und Nachname. Der ausführende Rechner braucht allerdings die PS Befehle für den DC. Sollte auf dem Exchange problemlos möglich sein
Gruß
Doskias
Nachtrag: Grade getestet. Die Exchange-Console lädt die DC Plugins bei Anwendung des Befehls automatisch nach.
get-aduser 123456
Gruß
Doskias
Nachtrag: Grade getestet. Die Exchange-Console lädt die DC Plugins bei Anwendung des Befehls automatisch nach.
Doch bringt es, aber ich mach nicht die Arbeit für dich ;)
ich helfe dir aber gerne weiter. Mit einem erhältst du den Namen des Users (mit entsprechen anderen Variablen halt nur den Nachnamen, je nach Bedarf).
Du musst dann nur noch in deinem Abfrageergebnis prüfen wo in der Spalter User 123456 steht und dies dann mit $aktueller_User ersetzen. Das kannst du theoretisch auch machen nachdem du deine CSV-Datei erzeugt hast und dann in der CSV 123456 durch den jeweiligen Benutzer ersetzen.
ich helfe dir aber gerne weiter. Mit einem
$aktueller_User=get-aduser "123456" | select-objekt Name
Du musst dann nur noch in deinem Abfrageergebnis prüfen wo in der Spalter User 123456 steht und dies dann mit $aktueller_User ersetzen. Das kannst du theoretisch auch machen nachdem du deine CSV-Datei erzeugt hast und dann in der CSV 123456 durch den jeweiligen Benutzer ersetzen.
Also ich hab jetzt mal n kleines Skript nebenbei für dich geschrieben
In Zeile 5 trägst du dein Postfach ein, welches du testen willst
In Zeile 6 deine Domäne
Zeile 11 ignoriert die Schleife die für jeden Eintrag durchgegangen wird, wenn die Rechte vererbt sind. Das war nötig, da nach deiner Abfrage noch Exchange Domain Servers und Exchange Services unter $user abgefragt wurden. Das kann theoretisch weg, wenn deine Abfrage sauber ist
Zeile 13 wandelt den Eintrag unter User in einen String um
Zeile 14 ersetzt dann in diesem String die Domäne und den \ durch nichts. Wird praktisch entfernt. Das kann zu Problemen führen, wenn dein Domänname im Benutzernamen enthalten ist. Je nachdem wie deine Domäne heißt. Würde sie zum Beispiel DOS heißen, würde bei mir neben der Domäne auch das DOS aus dem Namen verfallen. Die Aufgabe das zu korrigieren überlass ich dir
Zeile 15 führt dann den get-aduser aus und holt sich nur den SamAccountName
Zeile 16 Packt das ganze in ein neues array
Zeile 19 erstellt eine leere Textdatei unter c:\temp mit dem Namen des Postfaches und löscht eine ggf. vorhandene
Zeile 20 Zeigt dir die User an, die Vollzugriff auf dein ausgewähltes Postfach haben
Zeile 21 fügt die User in die Datei in Zeile 19 ein
Und ja, das ginge sicherlich auch kürzer, aber ich habe lieber ein Skript was ein paar Zeilen länger ist, denn das lässt sich leichter erklären
Noch Fragen?
Gruß
Doskias
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;
cls
$userliste=@()
$Postfach="Postfach"
$nbdomain="Domäne"
$user = Get-Mailbox "$Postfach" | Get-mailboxPermission | Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "nt-autorität\selbst") -and -not ($_.User -like "$nbdomain\Domänen-Admins")-and -not ($_.User -like "$nbdomain\Organisations-Admins") -and -not ($_.User -like "$nbdomain\Organization Management") -and -not ($_.User -like "$nbdomain\Administrator") -and -not ($_.User -like "$nbdomain\Exchange Servers") -and -not ($_.User -like "$nbdomain\Exchange Trusted Subsystem") -and -not ($_.User -like "nt-autorität\system")}
foreach ($anwender in $user)
{
if ($anwender.IsInherited -eq 0)
{
$aktueller_User=$anwender.user
$korrigiere_user= $aktueller_user -replace $nbdomain -replace '\\'
$Anwender_Name=Get-ADUser $korrigiere_user | select-object SAMAccountName
$userliste=$userliste+$Anwender_Name
}
}
write-host "Folgende user haben Vollzugriff auf das Postfach" $Postfach >c:\temp\$postfach.txt
$userliste
echo $userliste >> c:\temp\$postfach.txt
In Zeile 5 trägst du dein Postfach ein, welches du testen willst
In Zeile 6 deine Domäne
Zeile 11 ignoriert die Schleife die für jeden Eintrag durchgegangen wird, wenn die Rechte vererbt sind. Das war nötig, da nach deiner Abfrage noch Exchange Domain Servers und Exchange Services unter $user abgefragt wurden. Das kann theoretisch weg, wenn deine Abfrage sauber ist
Zeile 13 wandelt den Eintrag unter User in einen String um
Zeile 14 ersetzt dann in diesem String die Domäne und den \ durch nichts. Wird praktisch entfernt. Das kann zu Problemen führen, wenn dein Domänname im Benutzernamen enthalten ist. Je nachdem wie deine Domäne heißt. Würde sie zum Beispiel DOS heißen, würde bei mir neben der Domäne auch das DOS aus dem Namen verfallen. Die Aufgabe das zu korrigieren überlass ich dir
Zeile 15 führt dann den get-aduser aus und holt sich nur den SamAccountName
Zeile 16 Packt das ganze in ein neues array
Zeile 19 erstellt eine leere Textdatei unter c:\temp mit dem Namen des Postfaches und löscht eine ggf. vorhandene
Zeile 20 Zeigt dir die User an, die Vollzugriff auf dein ausgewähltes Postfach haben
Zeile 21 fügt die User in die Datei in Zeile 19 ein
Und ja, das ginge sicherlich auch kürzer, aber ich habe lieber ein Skript was ein paar Zeilen länger ist, denn das lässt sich leichter erklären
Noch Fragen?
Gruß
Doskias
das ist das schöne an powershell. es gibt immer mehrere Lösungen. wenn es klappt, ist doch schön.
gibt dir alle Postfächer der OU Users. An deine Umgebung anpassen und noch eine foreach Schleife um das was du hast. und immer den Namen des Postfaches ersetzen. dann läuft es für alle Postfächer durch.
Get-Mailbox -OrganizationalUnit Users
gibt dir alle Postfächer der OU Users. An deine Umgebung anpassen und noch eine foreach Schleife um das was du hast. und immer den Namen des Postfaches ersetzen. dann läuft es für alle Postfächer durch.