Benutzer mit den meisten Antworten
Ordnerberechtigung ändern aber nur für die 1. Unterordnerebene

Frage
-
Hallo!
Ich habe einen öffentlichen Ordner mit ca. 800 Unterordnern, die jeweils auch wieder Unterordner und Dateien enthalten. Ca. jeder der Unterordner ist ein persönlicher Ablageplatz für einen Benutzer des Netzwerkes. Jetzt haben wir nur manchmal das Problem, dass ausversehen ein Ordner in einen Anderen verschoben wird, also sollte die Berechtigung für die Gruppe "Benutzer" der Domäne insofern geändert werden, dass sie für die 800 Unterordner nur die Berechtigung "lesen" haben (also nix verschieben können), aber immernoch auf alle Inhalte der Ordner vollen Zugriff haben.
Da das bei 800 Ordnern ein übertriebener Zeitaufwand wäre, alles einzeln durchzuklicken, wurde mir das Powershell-Scripting nahegelegt. Allerdings ist mir das absolut fremd, daher frag ich jetzt hier nach Tips oder lieber noch Lösungen. Die Benutzerrechte einer bestimmte Gruppe sollen also ausschließlich für die erste Ebene durch ein Script automatisch durch einfaches ausführen ersetzt werden. (Am liebsten auch für zukünftige Ordner)
Wenns noch (Verständnis-)Fragen gibt, gerne fragen.
MfG Lostwarlock
Antworten
-
Eine fertige Lösung für dieses Problem nicht! Man muss sich diese schon erarbeiten ;) Ich kann dich gerne dabei unterstützen. Würde ich dir eine fertige Lösung hier präsentieren, wär ja garkein Lerneffekt vorhanden.
Du musst erstmal alle öffentlichen Ordner in eine Variable Speichern, dann die Berechtigung für jeden einzelnen Ordner in einer foreach-Schleife bearbeiten. Während jeder einzelne Ordner abgefragt wird, kannst du diverse bedingungen setzen.
Ein kleines Beispielscript: (NICHT getestet)
# Schreibe alle öffentlichen Ordner in eine Variable $publicFolders = Get-PublicFolder -GetChildren #enumeriere durch jedes Objekt in $PublicFolders foreach ($p in $publicFolders ){ Remove-PublicFolderClientPermission -Identity $p.Identity -User 'Domain\Benutzer'# alle berechtigungen die Domain\Benutzer erteilt sind, werden entfernt Add-PublicFolderClientPermission -AccessRights 'ReadItems' -Identity $p.Identity -User 'Domain\Benutzer' # domain\Benutzer erhält die Berechtigung Elemente zu lesen }
EDIT: Sorry, es gibt eine fertige Lösung, wenn du Exchange 2010/2013 verwendest gibt es im Installationsverzeichnis vom Exchange (z.B. C:\Program Files\Microsoft\Exchange Server\V14\) den Ordner Scripts, dort gibt es ein Script das nennt sich
ReplaceUserPermissionOnPFRecursive.ps1
Wie du das Skript verwendest steht hier:
http://technet.microsoft.com/en-us/library/bb123522%28v=exchg.141%29.aspx
Gruß
Kamil Kosek
Da Nahezu jedes Microsoft Produkt die Powershell unterstützt und du wahrscheinlich im Microsoft Server Administrationsumfeld arbeitest, kannst du nur gewinnen wenn du es dir aneignest. Die mMn beste Lösung zum lernen (ich bin echt lesefaul) ist der Videoblog von Peter Kriegel: https://www.youtube.com/user/GermanPowerShell
Er erklärt die Grundlagen echt gut!
- Bearbeitet Kamil Kosek Donnerstag, 22. Mai 2014 13:19
- Als Antwort vorgeschlagen brima Donnerstag, 22. Mai 2014 13:53
- Als Antwort markiert Alex Pitulice Freitag, 30. Mai 2014 11:01
Alle Antworten
-
Hi,
wenn du das Skript vom lokalen Computer ausführen möchstest, musst du zunächst eine Remote Powershell Session zum Exchange Server aufbauen. Dies wird so gemacht: Exchange Remote Powersehll
Wenn du eine Remotesession aufgebaut hast, kannst du mit dem Cmdlet
Get-PublicFolder -GetChildren
alle öffentlichen Ordner auflisten. Die Clientberechtigungen für einen Ordner kannst du mit
Get-PublicFolderClientPermission -Identity \Support
auflisten,
Hinzufügen von Berechtigungen geht mit
Add-PublicFolderClientPermission -Identity "\Support" -User test.user -AccessRights CreateItems
und entfernen geht mit
Remove-PublicFolderClientPermission
Hier hast du eine genaue beschreibung wie man Publicfolder Berechtigungen bearbeitetAchso,Voraussetzung ist natürlich das du ein Benutzerkonto hast welches die entsprechenden Berechtigungen hat Publicfolder-Berechtigungen zu bearbeiten und mindestens ein Exchange Server 2010!
Gruß
Kamil
-
Also ich hab das noch nicht ausprobiert, aber es geht darum, dass ganze in ein Script zu verfassen, sodass die Datei abgelegt werden kann, und bei Bedarf von anderen Administratoren im Netzwerk ausgeführt werden können. Deine Beschreibung sieht für mich auf den ersten Blick nach einer "zu-Fuß"-Lösung aus, wenn du verstehst, was ich meine! :)
Außerdem steht in deiner Beschreibung:
"Die Clientberechtigungen für einen Ordner kannst du mitGet-PublicFolderClientPermission -Identity \Support
auflisten, "
Ich bleib da jetzt bei "einen Ordner" hängen und muss schlucken. Gibts keine Lösung für alle 800+ Ordner gleichzeitig?
-
Eine fertige Lösung für dieses Problem nicht! Man muss sich diese schon erarbeiten ;) Ich kann dich gerne dabei unterstützen. Würde ich dir eine fertige Lösung hier präsentieren, wär ja garkein Lerneffekt vorhanden.
Du musst erstmal alle öffentlichen Ordner in eine Variable Speichern, dann die Berechtigung für jeden einzelnen Ordner in einer foreach-Schleife bearbeiten. Während jeder einzelne Ordner abgefragt wird, kannst du diverse bedingungen setzen.
Ein kleines Beispielscript: (NICHT getestet)
# Schreibe alle öffentlichen Ordner in eine Variable $publicFolders = Get-PublicFolder -GetChildren #enumeriere durch jedes Objekt in $PublicFolders foreach ($p in $publicFolders ){ Remove-PublicFolderClientPermission -Identity $p.Identity -User 'Domain\Benutzer'# alle berechtigungen die Domain\Benutzer erteilt sind, werden entfernt Add-PublicFolderClientPermission -AccessRights 'ReadItems' -Identity $p.Identity -User 'Domain\Benutzer' # domain\Benutzer erhält die Berechtigung Elemente zu lesen }
EDIT: Sorry, es gibt eine fertige Lösung, wenn du Exchange 2010/2013 verwendest gibt es im Installationsverzeichnis vom Exchange (z.B. C:\Program Files\Microsoft\Exchange Server\V14\) den Ordner Scripts, dort gibt es ein Script das nennt sich
ReplaceUserPermissionOnPFRecursive.ps1
Wie du das Skript verwendest steht hier:
http://technet.microsoft.com/en-us/library/bb123522%28v=exchg.141%29.aspx
Gruß
Kamil Kosek
Da Nahezu jedes Microsoft Produkt die Powershell unterstützt und du wahrscheinlich im Microsoft Server Administrationsumfeld arbeitest, kannst du nur gewinnen wenn du es dir aneignest. Die mMn beste Lösung zum lernen (ich bin echt lesefaul) ist der Videoblog von Peter Kriegel: https://www.youtube.com/user/GermanPowerShell
Er erklärt die Grundlagen echt gut!
- Bearbeitet Kamil Kosek Donnerstag, 22. Mai 2014 13:19
- Als Antwort vorgeschlagen brima Donnerstag, 22. Mai 2014 13:53
- Als Antwort markiert Alex Pitulice Freitag, 30. Mai 2014 11:01