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
MurdocX 1.002 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) }
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
daabm 1.428 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)
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
daabm 1.428 Geschrieben 30. April 2015 Melden Geschrieben 30. April 2015 Probiers mal mit $Folder.FullName :)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden