c64b311ee9
Goto Top

Add Public Folder Client Permissions ersetzen

Hallo liebe Community,

Im Einsatz ist Exchange Online mit Office 365

mit folgendem Befehl habe ich erfolgreich die Berechtigungen für den Standard Benutzer gesetzt.
Get-PublicFolder “\XXX“ –recurse | Add-PublicFolderClientPermission –User Standard –AccessRights Author
Leider habe ich zu spät gesehen, dass Author keine Berechtigung hat, Unterordner zu erstellen, sondern nur der PublishingAuthor.
Jetzt lassen sich diese aber nicht so einfach "überschreiben". Es kommt immer folgende Fehlermeldung:

Für den Benutzer wurde ein vorhandener Berechtigungseintrag gefunden:

1. Muss ich den Benutzer die Rechte entziehen und erneut den Befehl absetzen mit PublishingAuthor?
Und wie funktioniert das? Mit ( Get-PublicFolder “\XXX“ –recurse |Remove-PublicFolderClientPermission –User Standard –AccessRights Author) klappt das leider nicht, da erhalte ich folgende Fehlermeldung:

Cannot process argument transformation on parameter 'Identity'. Cannot convert value "-AccessRights" to type "Microsoft
.Exchange.Configuration.Tasks.PublicFolderIdParameter". Error: "Der für Parameter "-AccessRights" bereitgestellte Wert
liegt nicht im richtigen Format vor. Das richtige Format lautet "<OrganizationName>\\<FolderPath>"."
+ CategoryInfo : InvalidData: (face-smile [Remove-PublicFolderClientPermission], ParameterBindin...mationExceptio
n
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Remove-PublicFolderClientPermission


und ich habe noch keine Möglichkeit gefunden die Berechtigungen recursive wieder wegzunehmen...

2. Oder kann ich die Benutzerrechte einfach ersetzen und wenn ja, wie?
Hatte dazu ein Powershell Script gefunden und wollte dies ausführen:

ReplaceUserPermissionOnPFRecursive.ps1 -TopPublicFolder "\XXX" -User "Standard" -Permissions PublishingAuthor

Dann erhalte ich folgende Fehlermeldung:

Die Benennung "ReplaceUserPermissionOnPFRecursive.ps1" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptd
atei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt is
t (sofern enthalten), und wiederholen Sie den Vorgang.
Bei C:\Powershell\berechtigung.ps1:1 Zeichen:39

back-to-topReplaceUserPermissionOnPFRecursive.ps1 <<<< -TopPublicFolder "\XXX" -User "Standard" -Permissions PublishingAuthor

+ CategoryInfo : ObjectNotFound: (ReplaceUserPermissionOnPFRecursive.ps1:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Kann mir jemand bitte helfen??

Content-ID: 279855

Url: https://administrator.de/forum/add-public-folder-client-permissions-ersetzen-279855.html

Ausgedruckt am: 23.12.2024 um 14:12 Uhr

114757
114757 11.08.2015 aktualisiert um 12:22:38 Uhr
Goto Top
Die Standard-Berechtigung vorher wieder mit Remove-PublicFolderClientPermission entfernen face-wink und dann wieder hinzufügen. Geht hier einwandfrei.

Du hast ja auch den Ordnernamen bei Remove-Public.... vergessen face-wink

Öffentliche Ordner Berechtigungen - Exchange 2013

Die Benennung "ReplaceUserPermissionOnPFRecursive.ps1" wurde nicht als Name eines Cmdlet, einer Funktion,
Und hier warst du einfach nur im falschen Pfad .... und hast nicht den kompletten Pfad zum Skript angegeben !

Gruß jodel32
c64b311ee9
c64b311ee9 11.08.2015 um 12:23:36 Uhr
Goto Top
Hallo Jodel32,

ja das Problem dabei ist, dass ich so (Remove-PublicFolderClientPermission -Identity "XXX" -User Standard -AccessRights Author)
nur einen einzelnen Ordner die Berechtigung entziehen kann. Wir haben ca 250 Ordner mit Unterordnern. Deshalb würde ich gerne den recursive Befehl dabei haben.
114757
114757 11.08.2015 aktualisiert um 12:26:04 Uhr
Goto Top
Zitat von @c64b311ee9:

Hallo Jodel32,

ja das Problem dabei ist, dass ich so (Remove-PublicFolderClientPermission -Identity "XXX" -User Standard -AccessRights
Author)
nur einen einzelnen Ordner die Berechtigung entziehen kann. Wir haben ca 250 Ordner mit Unterordnern. Deshalb würde ich gerne
den recursive Befehl dabei haben.
Schon mal was von einer Foreach-Schleife und der Laufvariablen $_ gehört ?
c64b311ee9
c64b311ee9 11.08.2015 um 12:28:09 Uhr
Goto Top
Gehört ja, aber kein Plan wie ich das umsetzen könnte...
114757
114757 11.08.2015 aktualisiert um 12:37:06 Uhr
Goto Top
Hiermit entfernst du die Berechtigungen wieder rekursiv
Get-PublicFolder "\Verwaltung" -Recurse | %{Remove-PublicFolderClientPermission $_.Identity -User Standard -AccessRights Author -Confirm:$false}  
Dann kann du sie wieder hinzufügen.
Get-PublicFolder "\Verwaltung" -Recurse | Add-PublicFolderClientPermission -User Standard -AccessRights PublishingAuthor  
c64b311ee9
c64b311ee9 11.08.2015 um 12:41:19 Uhr
Goto Top
Das hat leider noch nicht geklappt:

A positional parameter cannot be found that accepts argument '-AccessRights'.
+ CategoryInfo : InvalidArgument: (face-smile [Remove-PublicFolderClientPermission], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Remove-PublicFolderClientPermission


Ich würde deinen Befehl auch gerne verstehen. Kannst du das evtl. nochma genauer erklären mit dem % $_-Identity?
c64b311ee9
c64b311ee9 11.08.2015 um 12:46:34 Uhr
Goto Top
Die Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausge
führt werden.
+ CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) ,
PSInvalidOperationException
+ FullyQualifiedErrorId : RemotePipelineExecutionFailed
114757
114757 11.08.2015 aktualisiert um 12:51:01 Uhr
Goto Top
Das hat leider noch nicht geklappt:
Geht hier wie immer einwandfrei !! Du musst einfach grundsätzlich was falsch machen.
Lässt sich aber auch so schreiben:
Get-PublicFolder "\Verwaltung" -Recurse | Remove-PublicFolderClientPermission -User Standard -AccessRights Author -Confirm:$false   
Das geht hier beides problemlos.

Ich würde deinen Befehl auch gerne verstehen. Kannst du das evtl. nochma genauer erklären mit dem % $_-Identity?
%{} ist eine Foreach-Schleife und $_.Identitiy greift auf die Eigenschaft Identity in die in diesem Fall den Pfad zum öffentlichen Ordner enthält zu welche zum aktuellen Objekt in der Pipeline aufgelöst wird.

Du brauchst erst mal einen Powershell-Grundkurs bevor du dich an einen Exchange wagst ...
Und natürlich macht man das immer vorher erst an einem Testsystem!
c64b311ee9
c64b311ee9 11.08.2015 um 12:55:30 Uhr
Goto Top
Ja, das mag ja sein, deswegen Frage ich ja auch um Hilfe!
Wenn es aber doch nicht funktioniert? Da es ja nur um die Berechtigung der ÖO geht finde ich das eigentlich sehr unkritisch.

PS C:\Users\xxx> Get-PublicFolder "\xxx" -Recurse | Remove-PublicFolderClientPermission -User Standard -AccessRigh
ts Author -Confirm:$false
Cannot process argument transformation on parameter 'Identity'. Cannot convert value "-AccessRights" to type "Microsoft
.Exchange.Configuration.Tasks.PublicFolderIdParameter". Error: "Der für Parameter "-AccessRights" bereitgestellte Wert
liegt nicht im richtigen Format vor. Das richtige Format lautet "<OrganizationName>\\<FolderPath>"."
+ CategoryInfo : InvalidData: (face-smile [Remove-PublicFolderClientPermission], ParameterBindin...mationExceptio
n
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Remove-PublicFolderClientPermission
114757
114757 11.08.2015 aktualisiert um 13:01:36 Uhr
Goto Top
Letzter Versuch:
Get-PublicFolder "\Verwaltung" -Recurse | %{Remove-PublicFolderClientPermission -Identity $_.Identity -User Standard -Confirm:$false}  
Sehe gerade bei Exch 2013 gibt es den Parameter -AccessRights nicht mehr, vermutlich hat er deswegen gemeckert.
c64b311ee9
c64b311ee9 11.08.2015 um 13:02:49 Uhr
Goto Top
Leider auch nicht.

Die Pipeline wird nicht ausgeführt, da bereits eine Pipeline ausgeführt wird. Pipelines können nicht gleichzeitig ausge
führt werden.
+ CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) ,
PSInvalidOperationException
+ FullyQualifiedErrorId : RemotePipelineExecutionFailed

Ja das Problem ist, dass ein lokaler Exchange sich doch wieder total anders verhält (siehe jetzt gerade)
Aber dann trotzdem vielen Dank für deine Zeit und deine Mühe! Vielleicht kriege ich das powershell script ja noch zum Laufen.
c64b311ee9
c64b311ee9 11.08.2015 um 13:03:51 Uhr
Goto Top
Hmm okay, aber die Rechtevergabe hatte ja auch mit AccessRights funktioniert?
114757
114757 11.08.2015 aktualisiert um 13:05:54 Uhr
Goto Top
Zitat von @c64b311ee9:
Ja das Problem ist, dass ein lokaler Exchange sich doch wieder total anders verhält (siehe jetzt gerade)
Nope mache ich ja jetzt gerade auf einem Ex Online, und das hier läuft bei dir auch nicht?
Get-PublicFolder "\Verwaltung" -Recurse | Remove-PublicFolderClientPermission -User Standard -Confirm:$false  
Wenn nicht ist deine Powershell kaputt. Ich mach das ja Tag für Tag ...
114757
114757 11.08.2015 aktualisiert um 13:06:51 Uhr
Goto Top
Hmm okay, aber die Rechtevergabe hatte ja auch mit AccessRights funktioniert?
Nein, nur beim Remove-.... CMDLet gibts den Parameter nicht mehr.
c64b311ee9
c64b311ee9 11.08.2015 um 13:15:25 Uhr
Goto Top
Also ich beginne mal ganz von vorne,

Powershell starten
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session
Set-ExecutionPolicy RemoteSigned
PS C:\Users\xxx> Get-PublicFolder "\Messen" -Recurse | Remove-PublicFolderClientPermission -User Standard -Confirm:$false
-

Cursor bleibt stehen und blinkt. Mehr passiert erstmal nicht...
c64b311ee9
c64b311ee9 11.08.2015 um 14:40:56 Uhr
Goto Top
Kein anderer vlt noch ne idee? Oder vlt ne Hilfe beim Powershell script ausführen?
c64b311ee9
c64b311ee9 12.08.2015 um 19:50:23 Uhr
Goto Top
Hallo Jodel,

das ist die Lösung. Bei Exchange 2016 ist wohl Standard in default geändert worden. Damit funktioniert es. Vielen Dank für deine Hilfe!

Get-PublicFolder "\Messen" -Recurse |% {Remove-PublicFolderClientPermission -Identity $_.Identity -User Default -Confirm:$false}
114757
114757 12.08.2015 aktualisiert um 20:02:30 Uhr
Goto Top
Zitat von @c64b311ee9:
das ist die Lösung. Bei Exchange 2016 ist wohl Standard in default geändert worden.
Exchange 2016 dat ist noch jarnich raus face-wink
Da ist nicht geändert worden, aber wenn System bzw die Mailbox auf Englisch konfiguriert ist, ist das klar face-smile
c64b311ee9
c64b311ee9 12.08.2015 um 20:10:23 Uhr
Goto Top
ja aber bei exchange online ist unter der haube schon ein 2016er im einsatz, deshalb. Nein die Mailbox ist nicht auf englisch konfiguriert, berechtigungen lassen sich ja auch mit standard vergeben, nur das entfernen klappte nicht.
114757
114757 12.08.2015 aktualisiert um 20:34:42 Uhr
Goto Top
Zitat von @c64b311ee9:
ja aber bei exchange online ist unter der haube schon ein 2016er im einsatz, deshalb.
Hast du das mit Get-ExchangeServer überprüft? Das wäre sehr sehr ungewöhnlich das die das so früh auf die produktiven User loslassen ...
Gibt ja noch nicht mal eine RTM vom neuen ...
Naja zuzutrauen wärs den luppen ja, genauso wie sie Windows 10 unfertig mit all seinen Bugs released haben.
c64b311ee9
c64b311ee9 13.08.2015 um 07:37:02 Uhr
Goto Top
Moin,

ne das Cmdlet gibt es so auch nicht mehr. Wenn ein Kalender Eintrag eines Raumpostfaches abgelehnt oder angenommen wird, steht unten drunter:
Gesendet von Microsoft Exchange Server 2016
Windows 10 ist doch super face-smile
114757
114757 13.08.2015 aktualisiert um 09:11:47 Uhr
Goto Top
ne das Cmdlet gibt es so auch nicht mehr.
Gibt's schon noch, nur im kastrierten EX Online wieder nicht, hab's gerade gesehen.

ist doch super
Naja, wer sich als Versuchskaninchen mit seinen Daten bei MS wohl fühlt, bitte.