floho 50 Geschrieben 29. April 2015 Melden Teilen 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 Link zu diesem Kommentar
MurdocX 952 Geschrieben 29. April 2015 Melden Teilen 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 Link zu diesem Kommentar
floho 50 Geschrieben 29. April 2015 Autor Melden Teilen 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 Link zu diesem Kommentar
daabm 1.356 Geschrieben 29. April 2015 Melden Teilen 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 Link zu diesem Kommentar
floho 50 Geschrieben 30. April 2015 Autor Melden Teilen 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 Link zu diesem Kommentar
daabm 1.356 Geschrieben 30. April 2015 Melden Teilen Geschrieben 30. April 2015 Probiers mal mit $Folder.FullName :) 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.