【发布时间】:2012-11-10 22:05:09
【问题描述】:
我需要一个脚本或简单的 powershell 代码来删除特定用户对文件夹的所有权限,方法是将这些删除也继承到所有子文件夹和文件 - 递归... 提前谢谢!
【问题讨论】:
标签: powershell permissions directory
我需要一个脚本或简单的 powershell 代码来删除特定用户对文件夹的所有权限,方法是将这些删除也继承到所有子文件夹和文件 - 递归... 提前谢谢!
【问题讨论】:
标签: powershell permissions directory
$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 中用户的所有安全规则
【讨论】:
ls c:\temp -recurse |set-acl -aclObject $acl
我认为更简单的方法是从具有正确权限的文件或文件夹中复制 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
【讨论】: