2010-12-16 15 views

Odpowiedz

8

Rozwinąłem na fragmencie Martona i mogłem dać dostęp do wszystkich folderów i podfolderów. Oto mój kod -

$FilesAndFolders = gci "c:\data" -recurse | % {$_.FullName} 
foreach($FileAndFolder in $FilesAndFolders) 
{ 
    #using get-item instead because some of the folders have '[' or ']' character and Powershell throws exception trying to do a get-acl or set-acl on them. 
    $item = gi -literalpath $FileAndFolder 
    $acl = $item.GetAccessControl() 
    $permission = "Everyone","FullControl","Allow" 
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission 
    $acl.SetAccessRule($rule) 
    $item.SetAccessControl($acl) 
} 
+0

Dzięki za to. Działa dobrze, a jeśli ktoś zastanawia się, "Get-Item -LiteralPath" działa na ścieżkach UNC, co oznacza, że ​​możesz stosować uprawnienia do zdalnych komputerów. – Patrick

4
$acl = Get-Acl c:\mydir 
$permission = "Everyone","FullControl","Allow" 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission 
$acl.SetAccessRule($rule) 
$acl | Set-Acl c:\mydir 
+0

Dzięki, ale dodała grupę Wszyscy tylko do głównego folderu, a także pole wyboru FullControl nie jest zaznaczone. czego mi brakuje? – tempid

+0

Mogło to nie być dobrą odpowiedzią na to pytanie, ale dzisiaj okazało się, że ten przykład jest przydatny, więc należy go głosować. – yzorg

3

Czasami „native” sposób PowerShell niekoniecznie jest najlepszym sposobem. Dla czegoś takiego nadal użyłbym icacls.exe. Pamiętaj, że dobry exes exes działa całkiem dobrze w PowerShell. Wystarczy cd do katalogu, który chcesz ustawić i wykonać:

icacls $pwd /grant "Everyone":(OI)(CI)F 

W ten sposób każdy pełny dostęp do katalogu bieżącego dołu (poprzez dziedziczenie uprawnień). To powinno działać tak długo, jak nie ma wyraźnych zaprzeczeń dla wszystkich w strukturze dir.

+0

Korzystając ze skryptów poniżej, dodano konto wszystkich użytkowników, ale nie przyznano im żadnych uprawnień. To podejście zadziałało dla mnie ... – BrianH

+0

Użyłbym tego, gdybym wiedział, co oznaczają magiczne kody. '(OI) (CF)' Jestem dev, który próbuje pomóc z devops, a nie administratorem, który próbuje zautomatyzować rzeczy, więc magia taka jest przerażająca w porównaniu z wersją "Read" lub "FullControl" poniżej. – yzorg

Powiązane problemy