2012-11-22 53 views

回答

4
$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递归地

+0

Hi Kayasax,再次感谢您的支持。它有助于最后一个代码,但不能递归移除?!你能否再次审查一次..感谢提前! – gaponte69

+1

真的吗?这已经完成了我的工作站上的技巧... 你可以尝试 'ls c:\ temp -recurse | set-acl -aclObject $ acl' –

+1

你的意思是像这样尝试:$ acl = get-acl c:\ temp $ accessrule =新物体system.security.AccessControl.FileSystemAccessRule( “域\用户”, “读” ,,, “允许”) $ acl.RemoveAccessRuleAll($ accessrule) LS C:\ TEMP -recurse | set-acl -aclObject $ acl – gaponte69

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 
+0

谢谢Kayasax的回复,但coukld你请给出一个例子,如果让我们说从D:\测试路径位置,我需要删除这个文件夹的所有权限,用户名称鲍勃... – gaponte69

+0

例如:$ acl = get-acl D:\ Test $ files = get-childItem $ acl -recurce | set-acl -aclobject $ acl -whatif .....以及我为用户指定对象的位置?在哪里我必须写用户bob和im定义即时消息删除权限... – gaponte69

+1

我已经完成我的答案 –

相关问题