none
Ordnerberechtigung ändern aber nur für die 1. Unterordnerebene RRS feed

  • 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

    Donnerstag, 22. Mai 2014 09:33

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

    PS:

    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
    Donnerstag, 22. Mai 2014 13:07

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 bearbeitet

    Achso,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


    Donnerstag, 22. Mai 2014 12:11
  • Sieht ja schonmal gut aus. Werd ich beizeiten ausprobieren. Vielen Dank erstmal. :)
    Donnerstag, 22. Mai 2014 12:23
  • Solltest du weitere hilfe benötigen, zöger nicht! ;)

    Donnerstag, 22. Mai 2014 12:25
  • 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 mit
    Get-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?

    Donnerstag, 22. Mai 2014 12:36
  • 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

    PS:

    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
    Donnerstag, 22. Mai 2014 13:07
  • Moin

    Welches Betriebssysten setzt du ein? Unter Win Srv.2012 müßte sich das Problem doch in dem öffentlichen Ordner mit den erweiterten Sicherheitsaneinstellungen erledigen lassen.

    Donnerstag, 22. Mai 2014 13:10
  • Ne, 2008. :)

    Donnerstag, 22. Mai 2014 13:16