powershell删除特定用户的文件夹的所有权限

时间:2012-11-22 13:35:34

标签: powershell permissions directory

我需要一个脚本或简单的PowerShell代码来删除特定用户对文件夹的所有权限,通过将这些删除继承到所有子文件夹和文件 - 递归... 提前谢谢!

2 个答案:

答案 0 :(得分:5)

 $acl=get-acl c:\temp
 $accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("domain\user","Read",,,"Allow")
 $acl.RemoveAccessRuleAll($accessrule)
 Set-Acl -Path "c:\temp" -AclObject $acl

这应该在c:\ temp递归

中擦除用户的所有安全规则

答案 1 :(得分:1)

我认为简单的方法是从具有正确权限的文件或文件夹中复制acl,并将其应用到您想要特定访问权限的文件夹。 例如:

$acl= get-acl /path/to/file_with_correct acl 
$files= get-childItem c:\temp\*.* -recurce |set-acl -aclobject $acl -whatif

删除-whatif参数以有效修改acl

或关注this technet article并使用以下代码:

$Right = [System.Security.AccessControl.FileSystemRights]"Read" 
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None 
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::InheritOnly  
$objType =[System.Security.AccessControl.AccessControlType]::Allow 

$objUser = New-Object System.Security.Principal.NTAccount("domain\bob") 
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
    ($objUser, $Right, $InheritanceFlag, $PropagationFlag, $objType) 
$objACL = Get-ACL "d:\test" 
$objACL.RemoveAccessRuleAll($objACE) 
Set-ACL "d:\test" -aclobject $objACL