2016-01-20 90 views
0

我目前使用它來獲取特定文件夾的所有權限列表。powershell權限

`$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