Per Powershell Berechtigungen im Exchange-Ordner ändern bei Sonderzeichen
Hallo zusammen,
ich habe folgendes "Problem". Wir haben ein Postfach von einem ausgeschiedenen Mitarbeiter. Nun sollen Kollegen seine Aufgaben übernehmen und dafür ausschließlich Leserechte auf seine E-Mails erhalten. Leider muss man jeden Ordner einzeln berechtigen und wir haben etwa 150 Ordner im Posteingang. Kein Problem, mach ich kurz mit Powershell:
Funktioniert auch ganz gut, bis auf zwei Ordner. Diese haben nämlich (nur ein Beispiel) den Namen Vorträge/Tagungen, welcher den Folderpath /Posteingang/VorträgeTagungen
Das Skript macht aus /Posteingang/Bestellungen erfolgreich $postfach:\Posteingang\Bestellungen. Bei den Vorträgen/Tagungen hingegen macht das Skript erfolgreich $postfach:\Posteingang\VorträgeTagungen daraus, allerdings meckert es dann rum, dass es keinen Ordner VorträgeTagungen gibt, was ja auch an sich korrekt ist. Übe die FolderID kann ich leider keine Berechtigungen verteilen.
Ich könnte mir jetzt das Postfach des Users Mappen aus dem / ein _ machen, das Skript durchlaufen lassen, den Namen wieder zurück auf / ändern und das Mapping entfernen. Das will ich aber nicht, weil ich (a) in dem Postfach nichts zu suchen habe und (b) das Postfach nicht verändert werden soll. Hat jemand eine alternative Idee?
Der Befehl
hat leider keinen recurse Schalter um die Berechtigungen einfach nach unten durchzureichen.
Gruß
Doskias
ich habe folgendes "Problem". Wir haben ein Postfach von einem ausgeschiedenen Mitarbeiter. Nun sollen Kollegen seine Aufgaben übernehmen und dafür ausschließlich Leserechte auf seine E-Mails erhalten. Leider muss man jeden Ordner einzeln berechtigen und wir haben etwa 150 Ordner im Posteingang. Kein Problem, mach ich kurz mit Powershell:
Add-MailboxFolderPermission -Identity $Postfach -User $benutzer -AccessRights ReadItems
$Postfachorder=Get-MailboxFolderStatistics $Postfach |Select-Object FolderPath
foreach ($pfolder in $Postfachorder)
{
$Ordnername=$postfach+":"+$pfolder.folderpath -replace "/","\"
Add-MailboxFolderPermission $Ordnername -user $benutzer -AccessRights ReadItems
}
Funktioniert auch ganz gut, bis auf zwei Ordner. Diese haben nämlich (nur ein Beispiel) den Namen Vorträge/Tagungen, welcher den Folderpath /Posteingang/VorträgeTagungen
Das Skript macht aus /Posteingang/Bestellungen erfolgreich $postfach:\Posteingang\Bestellungen. Bei den Vorträgen/Tagungen hingegen macht das Skript erfolgreich $postfach:\Posteingang\VorträgeTagungen daraus, allerdings meckert es dann rum, dass es keinen Ordner VorträgeTagungen gibt, was ja auch an sich korrekt ist. Übe die FolderID kann ich leider keine Berechtigungen verteilen.
Ich könnte mir jetzt das Postfach des Users Mappen aus dem / ein _ machen, das Skript durchlaufen lassen, den Namen wieder zurück auf / ändern und das Mapping entfernen. Das will ich aber nicht, weil ich (a) in dem Postfach nichts zu suchen habe und (b) das Postfach nicht verändert werden soll. Hat jemand eine alternative Idee?
Der Befehl
Add-MailboxFolderPermission -Identity $Postfach -User $benutzer -AccessRights ReadItems
Gruß
Doskias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4865347077
Url: https://administrator.de/contentid/4865347077
Ausgedruckt am: 10.11.2024 um 01:11 Uhr
4 Kommentare
Neuester Kommentar
Hi.
Machs doch direkt so dann entfällt auch die Replacerei und Sonderzeichen spielen keine Rolle.
Keep it simple .
Gruß S.
Machs doch direkt so dann entfällt auch die Replacerei und Sonderzeichen spielen keine Rolle.
$postfach = "MaxMuster"
$benutzer = "OtherUser"
Get-MailboxFolder $postfach -Recurse -ResultSize Unlimited | Add-MailboxFolderPermission -AccessRights ReadItems -User $benutzer -Confirm:$false
Gruß S.
Klappt hier im Test aber einwandfrei mit einem Admin und einer anderen Mailbox, ImpersonationRecht und RecipientManagement Rolle vorausgesetzt!
und das Ganze ist ja auch nicht verwunderlich. Unter https://learn.microsoft.com/en-us/powershell/module/exchange/get-mailbox ... steht:
Doch das kann ein Admin, wenn er das Recht für ApplicationImpersonation und die Recipient-Management Rolle inne hat klappt es auch mittels Get-MailboxFolder, hier einwandfrei getestet.
Wenn du es immer noch mit Get-MailboxFolderStatistics machen willst dann bspw. so
Das spezielle Unicode Zeichen(0xF8FF) steht hier generell für ein für MS ungültiges Zeichen im Pfad, ich würde diese also sowieso mal in der Mailbox ersetzen denn MS sagt es selbst:
Special Characters in Folder Names
Warum sie die beim Erstellen trotzdem immer noch zulassen sei mal dahingestellt, ...
Get-MailboxFolder : Das Postfach /o=Erste Organisation/ou=Erste administrative Gruppe/cn=Recipients/cn=[benutzername] kann nicht geöffnet werden.
In Zeile:1 Zeichen:1
Get-MailboxFolder $postfach -Recurse -ResultSize Unlimited | Add-Mail ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( : ) [Get-MailboxFolder], ConnectionFailedTransientException
+ FullyQualifiedErrorId : [Server=[Mailserver],RequestId=0f85b2f5-fbf2-4e60-95e3-8f3b1e00fd64,TimeStamp=06.12.2022 08:00:40] [FailureCategory=Cmdlet-ConnectionFailedTransientException] EB94BA5B,Microsoft.Exchange.Management.StoreTasks.GetMailboxFolder
In Zeile:1 Zeichen:1
Get-MailboxFolder $postfach -Recurse -ResultSize Unlimited | Add-Mail ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( : ) [Get-MailboxFolder], ConnectionFailedTransientException
+ FullyQualifiedErrorId : [Server=[Mailserver],RequestId=0f85b2f5-fbf2-4e60-95e3-8f3b1e00fd64,TimeStamp=06.12.2022 08:00:40] [FailureCategory=Cmdlet-ConnectionFailedTransientException] EB94BA5B,Microsoft.Exchange.Management.StoreTasks.GetMailboxFolder
und das Ganze ist ja auch nicht verwunderlich. Unter https://learn.microsoft.com/en-us/powershell/module/exchange/get-mailbox ... steht:
Use the Get-MailboxFolder cmdlet to view folders in your own mailbox. Administrators can't use this cmdlet to view folders in other mailboxes (the cmdlet is available only from the MyBaseOptions user role).
Doch das kann ein Admin, wenn er das Recht für ApplicationImpersonation und die Recipient-Management Rolle inne hat klappt es auch mittels Get-MailboxFolder, hier einwandfrei getestet.
Wenn du es immer noch mit Get-MailboxFolderStatistics machen willst dann bspw. so
$postfach = "MaxMuster"
$benutzer = "OtherUser"
Get-MailboxFolderStatistics $postfach -FolderScope All | %{
Add-MailboxFolderPermission -Identity ($_.Identity -replace '^([^\\]+)','$1:' -replace ''\uF8FF'','/') -User $benutzer -AccessRights ReadItems
}
Das spezielle Unicode Zeichen(0xF8FF) steht hier generell für ein für MS ungültiges Zeichen im Pfad, ich würde diese also sowieso mal in der Mailbox ersetzen denn MS sagt es selbst:
Special Characters in Folder Names
When you create a folder in the Exchange store programmatically, there are no character restrictions on the folder name. Special characters, such as "*" or "?", are allowed in folder names, but their use is not recommended because they may be displayed incorrectly in Microsoft® Windows® Explorer. When you create a folder through Windows Explorer, however, the following special characters are not allowed in folder names:
/ \ * ? < > |
When you create a folder in the Exchange store using Microsoft Outlook® Web Access, there are some restrictions on using special characters in the folder name. The following special characters in a folder name will cause an error to be generated:
[ ] / \ & ~ ? * | < > " ; : +
Outlook Web Access will display any pre-existing folders with names that contain any of the special characters above.
Warum sie die beim Erstellen trotzdem immer noch zulassen sei mal dahingestellt, ...