doskias
Goto Top

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:

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ägeTagungen

Das Skript macht aus /Posteingang/Bestellungen erfolgreich $postfach:\Posteingang\Bestellungen. Bei den Vorträgen/Tagungen hingegen macht das Skript erfolgreich $postfach:\Posteingang\VorträgeTagungen daraus, allerdings meckert es dann rum, dass es keinen Ordner VorträgeTagungen 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
hat leider keinen recurse Schalter um die Berechtigungen einfach nach unten durchzureichen.

Gruß
Doskias

Content-ID: 4865347077

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

Ausgedruckt am: 10.11.2024 um 01:11 Uhr

4863114660
4863114660 05.12.2022 aktualisiert um 17:20:05 Uhr
Goto Top
Hi.
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
Keep it simple face-smile.

Gruß S.
Doskias
Doskias 06.12.2022 um 09:10:24 Uhr
Goto Top
Moin,

danke, aber das funktioniert nicht. ich bekomme folgende Fehlermeldung:

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

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).

Hilft mir also nicht weiter, wenn ich als Admin vom Exchange -Server aus die Einstellungen verändern will/muss. Die Grundidee hatte ich auch schon, allerdings mit
Get-MailboxFolderStatistics $Postfach|Add-MailboxFolderPermission -AccessRights ReadItems -User $benutzer -Confirm:$false
Hier meckert Powershell, dann aber:
Add-MailboxFolderPermission : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren.
Und auch das ist eigentlich logisch, da Get-MailboxFolderStatistics ja "nur" den Folderpath liefert. Dieser lautet ja aber Beispielsweise /Posteingang, während add-MailboxFolderPermission aber Benutzer:\Posteingang benötigt.

Keep it simple
Das ist der Weg face-wink

Gruß
Doskias
4863114660
4863114660 06.12.2022 aktualisiert um 10:52:37 Uhr
Goto Top
Zitat von @Doskias:
danke, aber das funktioniert nicht. ich bekomme folgende Fehlermeldung:
Klappt hier im Test aber einwandfrei mit einem Admin und einer anderen Mailbox, ImpersonationRecht und RecipientManagement Rolle vorausgesetzt!

screenshot

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

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, ...
Doskias
Doskias 06.12.2022 um 14:32:20 Uhr
Goto Top
Zitat von @4863114660:

Zitat von @Doskias:
danke, aber das funktioniert nicht. ich bekomme folgende Fehlermeldung:
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:
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.
Ah verstehe. Ich hab grade mal den Exchange-Server geprüft. die recipientManagement-Rolle ist nicht zugewiesen und eine Rolle mit ApplicationImperonation exisitert nicht. Ich denke, du meinst das, wenn die ImpersonationRecht schreibst. Zumindest klingt der MS Artikel danach https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web ...

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
Ich glaube ich werde diesen Hinweis einfach weiter verfolgen, bevor ich jetzt wegen Ordnerberechtigungen ganze Rechtestrukturen anlege. Ich denke ich werde einfach eine Mail verfassen, dass die Verwendung dieser Zeichen unterlassen wird und das regelmäßig prüfen.

Warum sie die beim Erstellen trotzdem immer noch zulassen sei mal dahingestellt, ...
Weil eine Hand nicht weiß, was die andere macht.

Gruß
Doskias