Export-Automapping
In Exchange können Benutzer nicht nur Stellvertreter- oder Vollzugriff auf ein Postfach haben, sondern auch das zusätzliche Postfach automatisch eingebunden bekommen. Dafür sorgt das "Automapping"-Feature. Gerade bei Migrationen mit Prepare-Moverequest.ps1 oder anderen Umorganisationen kann es schon mal passieren, dass ein Objekt in eine andere Domain oder Forst verschoben wird und damit das Automapping verloren geht.
Export
Daher habe ich mir zuerst ein Skript gebaut, welches die Automapping-Einträge in eine CSV-Datei exportieren kann.
Der einfache Demo-Code hat keinerlei Plausibilitätsprüfung oder Fehlerbehandlung und funktionierst nur in einer Domain.
# Export-Automapping # # Reads the local Exchange AD to generate a list of Users and Automapping entries # [CMDLetBinding()] param() Write-Verbose "Loading Module ActiveDirectory" Import-Module ActiveDirectory Write-Verbose "Search for Delegate using Get-ADUser" $sharedmailboxes = Get-ADUser ` -LDAPFilter "(msExchDelegateListLink=*)" ` -Properties name,mailnickname,mail,msExchDelegateListLink Write-Verbose "Start Processing" ForEach ($sharedmailbox in $sharedmailboxes) { Write-Verbose " Processing sharedmailbox $($sharedmailbox.mail)" foreach ($delegatedn in $sharedmailbox.msExchDelegateListLink) { Write-Verbose " Parsing delegated User $($delegatedn)" $delegate = get-aduser $delegatedn -properties mail Write-Verbose " Mailaddress $($delegate.mail)" $result = [pscustomobject][ordered]@{ shareddn = $sharedmailbox.distinguishedname.tostring() sharedmail = $sharedmailbox.mail.tostring() delegatedn = $delegate.distinguishedname.tostring() delegatemail = $delegate.mail.tostring() } $result } } Write-Verbose "Done Processing"
Die Ausgabe kann über die Pipeline in eine CSV-Datei geschrieben werden und hat vier Spalten, in denen die Felder "shareddn" und "sharedmail" die Informationen zum Postfach enthalten , auf die das Postfach in den Feldern "delegatedn" und "delegatedn" per Automapping berechtigt ist.
PS C:\>.\export-automapping.ps1 | Export-CSV automapping.csv -NoTypeInformation -Encoding utf8
Wenn ein Postfach gleich mehrere berechtigte Benutzer hat, dann sind dies auch mehrere eigenständige Zeilen.
Die Erstellung können Sie gerne auch automatisieren, um z.B. Berichte zu erstellen oder Veränderungen z.B. über GIT zu tracken.
Das Skript wertet nicht die Mailboxpermissions selbst aus. Es könnte also sein, dass jemand noch im Automapping enthalten ist aber keine Rechte hat. Das kann passieren, wenn jemand manuell vorbei an den Exchange Commandlets die Einträge verändert. Nach meiner Beobachtung ist "Automapping" auch immer mit "FullAccess" verbunden aber nicht umgekehrt.
Import
Die Export-Datei ist natürlich auch eine gute Basis, um fehlende Einstellungen wiederherzustellen. Solange man sich in der gleichen Umgebung bewegt, sollte ein Re-Import anhand der bestehenden Mailadresse problemlos möglich sein.
Import-CSV automapping.csv ` | foreach { ` Add-MailboxPermission ` -Identity $_.sharedmail ` -User $_.delegatemail ` -AccessRights FullAccess ` -AutoMapping:$true }
Wenn es um eine Migration geht und die Zielumgebung komplett andere Domaincontroller, OUs und distinguishedNames hat, dann können sie aber mit der Mailadresse immer noch weiter kommen oder in der CSV-Datei meist recht einfach die Mailadressen umschreiben. Die Exchange Commandlets sind hier ja flexibel genug, auch zusätzliche SMTP-Adressen in den ProxyAddresses zu verwenden.
Da ich hier mit "Add-MailboxPermission" arbeite, muss der Import natürlich durch einen Exchange Empfängeradministrator über die Exchange PowerShell erfolgen.
Zudem setzt das Beispiel nicht nur "Automapping" sondern auch die AccessRights auf "FullAccess", was aber in der Regel für Stellvertreterzugriffe sowieso sinnvoll ist.
Leider gibt es kein "Set-MailboxPermission", mit dem nur das Automapping eingestellt werden kann.
In dem Fall müssen Sie die vorherigen Berechtigungen erst entfernen und dann wieder neu setzen.
To disable auto-mapping for a mailbox
where the user was already assigned Full Access permission,
you need to remove the user's Full Access permission by
using the Remove-MailboxPermission cmdlet, and then reassign
the user Full Access permission on the mailbox using the
AutoMapping parameter with the value $false.
Quelle:
https://docs.microsoft.com/en-us/powershell/module/exchange/add-mailboxpermission?view=exchange-ps
- Add-MailboxPermission
https://docs.microsoft.com/de-de/powershell/module/exchange/add-mailboxpermission?view=exchange-ps
Automapping für FullAccess
Den Hinweis aus der Microsoft Dokumentation können Sie natürlich auch als Hinweise sehen, wie Sie "halbfertige" Berechtigungen nachziehen können. Zuerst generiere ich eine Liste der Postfächer, auf dem andere Personen berechtigt sind:
Get-Mailbox ` | Get-MailboxPermission ` | Where { ` ($_.IsInherited -eq $False) ` -and ($_.AccessRights -like "*FullAccess*") ` -and -not ($_.User -like "NT AUTHORITY\SELF") } ` | Select Identity, User, AccessRights
Diese List kann auch mal für andere Berichte interessant sein. Mein Ziel ist es aber nun, für alle Postfächer und mit "FullAccess" berechtigten Anwender das Automapping einzuschalten.
Get-Mailbox ` | Get-MailboxPermission ` | Where { ` ($_.IsInherited -eq $False) ` -and ($_.AccessRights -like "*FullAccess*") ` -and -not ($_.User -like "NT AUTHORITY\SELF") } ` | foreach { ` Add-MailboxPermission ` -identity $_.Identity ` -User $_.User ` -AccessRights FullAccess ` -Automapping:$true }
Leider ist es nicht möglich, den Parameter "AccessRights" wegzulassen. Die PowerShell wird auch mit jeder Zeile eine gelbe Warnung auswerfen, dass der Benutzer bereits in den Berechtigungen drin steht. Die PowerShell setzt aber zusätzlich das Feld "msExchDelegateListLink" beim Postfach, was aber nicht explizit angezeigt wird.
Über den gleichen Weg können Sie das AutoMapping wieder deaktivieren.
- Enable Outlook Automapping for Exchange
mailboxes
https://blog.expta.com/2019/01/enable-outlook-automapping-for-exchange.html - Add-MailboxPermission
https://docs.microsoft.com/de-de/powershell/module/exchange/add-mailboxpermission?view=exchange-ps - Full Access Mailbox Permissions Report using Powershell
https://morgantechspace.com/2019/07/full-access-mailbox-permissions-report-powershell.html
Weitere Links
- Prepare-Moverequest.ps1
- Shared Mailbox
- Autodiscover XML
-
Mailbox auto-mapping is lost for migrated
users after cross-forest migration
https://social.technet.microsoft.com/wiki/contents/articles/41823.mailbox-auto-mapping-is-lost-for-migrated-users-after-cross-forest-migration.aspx - So entfernen Sie automapping für ein
freigegebenes Postfach in Outlook für Office
365
https://docs.microsoft.com/de-de/outlook/troubleshoot/profiles-and-accounts/remove-automapping-for-shared-mailbox - Copy Links and Backlinks Between Users
and Shared Mailboxes (automapping)
https://c7solutions.com/2018/06/copy-links-and-backlinks-between-users-and-shared-mailboxes-automapping