Molle 0 Geschrieben 31. Mai 2016 Melden Teilen Geschrieben 31. Mai 2016 (bearbeitet) Hallo zusammen, in einer Ordnerstruktur sind "Read" - Berechtigungen für mehrere Gruppen eingerichtet. Die Gruppen beginnen alle mit den gleichen drei Buchstaben. Nun möchte ich bei all diesen Gruppen für alle Ordner bei denen sie eingetragen sind die Berechtigung auf "Modify" ändern. Mein bisheriger (recht armer) Ansatz: $folder = "C:\Temp" $name = "*ABC*" $folders = Get-ChildItem $folder -recurse | where-object { $_.PSIScontainer } $ACLs = Get-Acl $folders.FullName | ForEach-Object { $_.Access | Where {$_.IdentityReference -Like $name} $group = $_.IdentityReference $permission = $group,"Modify", $InheritanceFlag, $PropagationFlag, $objType $Ar = New-Object System.Security.AccessControl.FileSystemAccessRule($permission) $Acl.SetAccessRule($Ar) Set-Acl $Acl } Vielen Dank schon mal für mögliche Denkanstösse! bearbeitet 31. Mai 2016 von Molle Zitieren Link zu diesem Kommentar
Beste Lösung MurdocX 954 Geschrieben 1. Juni 2016 Beste Lösung Melden Teilen Geschrieben 1. Juni 2016 (bearbeitet) Hallo Molle, mit deinem "recht armen" Ansatz kommst du nicht weit. Ich hab Dir das benötigte Skript geschrieben und getestet. Es sucht in dem angegebenen Pfad nach den Ordnern und Unterordnern. Ließt die Berechtigungen aus und schreibt die mit 'ReadandExecute" zu 'Modify' um. Die Vererbung ist aktiviert. Die 3 Variablen sind auszufüllen: $strPfad = 'LW:\ORDNER'$strGruppenbezeichnung = 'MB-DL'$strDomäne = 'DOMÄNE' # Domäne ohne Endung wie z.B. '.local' -> NETBIOS-NAME Viel Erfolg ;-) # # Author: Jan Weis # www.it-explorations.de # # --- BENUTZER VARIABLEN ---# $strPfad = 'LW:\ORDNER' $strGruppenbezeichnung = 'MB-DL' $strDomäne = 'DOMÄNE' # Domäne ohne Endung wie z.B. '.local' -> NETBIOS-NAME # --- SYSTEM VARIABLEN --- # # FileSystemRights Flags $objFileSystemRightModify = [System.Security.AccessControl.FileSystemRights]'Modify' $objFileSystemRightReadExecute = [System.Security.AccessControl.FileSystemRights]'ReadAndExecute' # InheritanceFlags Flags $objInheritanceFlagDirectory = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $objInheritanceFlagFile = [System.Security.AccessControl.InheritanceFlags]::None # Common Flags $objAccessControlTypeAllow = [System.Security.AccessControl.AccessControlType]::Allow $objPropagationFlagsNone = [System.Security.AccessControl.PropagationFlags]::None # --- SKRIPT ---# Foreach ($objOrdnerItem in (Get-ChildItem -Path $strPfad)) { # Berechtigungen abrufen $objOrdnerItemACL = Get-Acl -Path $objOrdnerItem.FullName # Prüfe jedes Berechtigungsobjekt ob es den gewünschten Namen beinhaltet UND die Berechtigung 'ReadAndExecute' beinhaltet [String[]]$strACLGruppenListe = ($objOrdnerItemACL.Access | Where-Object {$_.IdentityReference -match $strGruppenbezeichnung -and $_.FileSystemRights -like 'ReadAndExecute*'}).IdentityReference.Value # Passen die Berchtigung für jede gefundene Gruppe an foreach ($strACLGruppenItem in $strACLGruppenListe) { # Für jede gefundene Gruppe wird die Berechtigung auf 'Modify' angepasst # Domäne entfernen $strACLGruppenItem = $strACLGruppenItem.replace("$strDomäne\",'') # NTAccount-Object anlegen $objADSecGruppe = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList ($strACLGruppenItem) # FILESYSTEMACCESSRULE-OBJECT ANLEGEN $objDirectoryAceRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList ($objADSecGruppe, $objFileSystemRightModify, $objInheritanceFlagDirectory, $objPropagationFlagsNone, $objAccessControlTypeAllow) # NEUE ACL HINZUFÜGEN $objOrdnerItemACL.AddAccessRule($objDirectoryAceRule) # NEUE ACL AUF DAS OBJEKT SCHREIBEN $objOrdnerItemACL | Set-Acl -Path $objOrdnerItem.FullName } } Um eine Ausgabe zu bekommen, kannst du noch unter dem letzten Command "Neue ACL auf das Objekt schreiben" folgenden Befehl darunter setzen: Write-Host ":: [Berechtigung angepasst] Gruppe: '$strACLGruppenItem'; Pfad: '$($objOrdnerItem.FullName)'" -ForegroundColor Yellow bearbeitet 1. Juni 2016 von MurdocX Zitieren Link zu diesem Kommentar
Gadget 37 Geschrieben 1. Juni 2016 Melden Teilen Geschrieben 1. Juni 2016 Hi Molle, ich hab jetzt kein ganzes Skript geschrieben wie MurdocX, jedoch hatte ich eine ähnliche Aufgabenstellung vor einigen Wochen zu bewerkstelligen und habe dies wie folgt umgesetzt. https://kohnstechblog.de/powershell/berechtigungsverwaltung-mittels-powershell-modul-ntfssecurity Gruß Gadget Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.