2016-01-20 8 views
0

В настоящее время я использую это, чтобы получить список всех разрешений для определенных папок.powershell permissions

`$InputFile = "C:\temp\Folders.txt" 
$OutputFile = "C:\temp\FolderPermissions.txt" 
$FolderList = Get-Content $InputFile 

ForEach ($Folder in $FolderList) 
{ 
    Get-Acl $folder | Format-list >>$OutputFile 
    } 

` 

Что бы я хотел, для этого необходимо удалить весь доступ, кроме администратора, из каждой из указанных папок.

Я посмотрел на использование SetAccessControl, но мне удастся его удалить.

Может кто-нибудь указать мне в правильном направлении.

Благодаря

ответ

1

Следующий код приведет к удалению пользователей пользователь execpt соответствие «администратору» Если вы хотите добавить несколько учетных записей добавьте его в Where-Object фильтр, например:

Where-Object {$_.IdentityReference -match 'Administrator' -or $_.IdentityReference -eq 'NT AUTHORITY\SYSTEM'}

$InputFile = "C:\temp\Folders.txt" 
$OutputFile = "C:\temp\FolderPermissions.txt" 
$FolderList = Get-Content $InputFile 

ForEach ($Folder in $FolderList) 
{ 
Get-Acl $folder | Format-list >>$OutputFile 

### Remove all ACL Rules exepet 'Administrator(s)' 

$ACL = Get-ACL -Path $Folder 
$Rules = $ACL.Access | Where-Object {$_.IdentityReference -notmatch 'Administrator'} 

    Foreach ($Rule in $Rules) 
    { 
    [Void]$ACL.RemoveAccessRule($Rule) 
    } 
    Set-Acl -Path $folder -AclObject $acl 

}  
+0

Идём теперь попробовать, фантастически. Очень ценю помощь. – david

+0

Спасибо, это сработало, но есть все равно, чтобы он только менял разрешения на указанную папку, а не рекурсивно – david

+0

это зависит от ваших папок в списке папок ... – Avshalom

 Смежные вопросы

  • Нет связанных вопросов^_^