floho 50 Geschrieben 29. April 2015 Melden Geschrieben 29. April 2015 (bearbeitet) Hallo! in einem Verzeichnis sind mehrere Ordner (ohne Inhalt) mit verschiedenen Besitzern. Ich möchte nun pro Ordner den Besitzer herausfinden und diesem auf "seinen" entsprechenden Ordner bestimmte Vollzugriffsrechte geben. Hintergrund: Bisher hat jeder Besitzer zwar Vollzugriff auf seinen Ordner, jedoch nur mit dem Zusatz "This Folder only". Ich benötige jedoch "This Folder, Subfolders and Files" hier. Bisheriger Ansatz nach Internetrecherche: $Folders = Get - ChildItem C:\Beispiel\ foreach {$Tempfolder in $Folders} $Owner = Get - ACL $Folders $ACL = New-Object system.Security.AccessControl.FileSystemAccessRule($Owner, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") set-acl = $ACL Funktioniert (natürlich) leider nicht... Kann mir jemand auf die Sprünge helfen? Vielen Dank! bearbeitet 29. April 2015 von floho Zitieren
MurdocX 965 Geschrieben 29. April 2015 Melden Geschrieben 29. April 2015 Ne so wird das nix... ;) Habe leider keine Zeit, deswegen werde ich Dir mal nur den Code in den Raum schieben... Den Rest musst du Dir aber erst mal selber anpassen! Ändere den Besitzer und passe Dir die Berechtigungen an wie du sie brachst und fertig ;-) $Permission = Get-ChildItem -Path 'C:\Test' | Get-Acl ForEach ($Obj in $Permission) { $objUser = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList ("BESITZER") $colRights = [System.Security.AccessControl.FileSystemRights]'Modify' $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None $objType = [System.Security.AccessControl.AccessControlType]::Allow $objACE = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType) $acl = Get-Acl $FQPath $acl.AddAccessRule($objACE) } Zitieren
floho 50 Geschrieben 29. April 2015 Autor Melden Geschrieben 29. April 2015 (bearbeitet) Dankeschön für den Code! Wo / wie wird in diesem denn die Variable $FQPath definiert? Erhalte beim Testen die Meldung: Get-Acl : Cannot validate argument on parameter 'Path'. The argument is null or empty bearbeitet 29. April 2015 von floho Zitieren
daabm 1.387 Geschrieben 29. April 2015 Melden Geschrieben 29. April 2015 So aus dem Gedächtnis geraten: $Permission = Get-ChildItem -Path 'C:\Test' | Get-Acl ForEach ($Obj in $Permission) Ändere das in $Folders = Get-ChildItem -Path 'C:\Test' ForEach ($FQPath in $Folders) Zitieren
floho 50 Geschrieben 30. April 2015 Autor Melden Geschrieben 30. April 2015 (bearbeitet) Ich habe den Code etwas umgestellt und zum Testen die $user Variable mit einem festen Benutzer definiert. $user = "domain\username" $Folders = Get-ChildItem -Path "C:\temp" $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None $objType = [System.Security.AccessControl.AccessControlType]::Allow foreach ($Folder in $Folders) { $acl = Get-Acl $Folder $permission = $user,"FullControl", $InheritanceFlag, $PropagationFlag, $objType $accessrule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission $acl.AddAccessRule($accessrule) set-acl $Folder $acl } Leider erhalte ich folgende Fehlermeldung ("temp_subfolder" ist ein Unterordner von C:\temp): Get-Acl : Cannot find path 'temp_subfolder' because it does not exist. At C:\temp\Untitled1.ps1:9 char:8 + $acl = Get-Acl $Folder bearbeitet 30. April 2015 von floho Zitieren
daabm 1.387 Geschrieben 30. April 2015 Melden Geschrieben 30. April 2015 Probiers mal mit $Folder.FullName :) Zitieren
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.