Добавить группу «Все» в каталог и все его подкаталоги - PullRequest
7 голосов
/ 16 декабря 2010

В настоящее время я использую 32-битную Vista. Как добавить группу безопасности Windows «Все» и предоставить полный контроль над каталогом, всеми его подкаталогами и всеми файлами? Есть ли сценарий powershell, который я мог бы использовать?

Спасибо!

Ответы [ 3 ]

9 голосов
/ 17 декабря 2010

Я расширил фрагмент кода Мартоны и смог предоставить доступ ко всем папкам и подпапкам. Вот мой код -

$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)
}
4 голосов
/ 16 декабря 2010
$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
3 голосов
/ 21 декабря 2010

Иногда «родной» способ PowerShell не обязательно является лучшим. Для чего-то подобного я все равно использовал бы icacls.exe. Помните, что старые PowerShell работают довольно хорошо. Просто перейдите в каталог, который вы хотите установить и выполнить:

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

Это даст всем полный доступ к текущему каталогу вниз (через наследование разрешений). Это должно работать до тех пор, пока в структуре dir нет явных отказов всем.

...