使用PowerShell完全从ACL中删除用户

我希望使用PowerShell从文件夹权限中删除用户。 我已经find了很多关于如何删除用户权限的例子,但我实际上是想完全删除用户。

相当于在Windows资源pipe理器中执行以下操作:1.右键单击文件夹,然后select“属性”。 2.单击安全选项卡3.单击编辑4.突出显示用户或组。 5.单击删除

这是我试图在PowerShell中模仿的删除点击。

提前致谢。

正如Simon所build议的那样,下面的命令将实现你想要删除特定的用户或组的目的。

使用NTFSSecurity模块( https://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85

Remove-NTFSAccess -AccessRights FullControl -Account DOMAIN\Group -Path c:\temp -AccessType Deny -AppliesTo ThisFolderSubfoldersAndFiles Remove-NTFSAccess -AccessRights FullControl -Account DOMAIN\Group -Path c:\temp -AccessType Allow -AppliesTo ThisFolderSubfoldersAndFiles 

我写了一个脚本来删除文件夹中的所有安全组,除了我明确排除的组。

 $path = "C:\Path\To\Folder" $users = @{} $users = Get-NTFSAccess $path | Where-Object {$_.Account -ne "DOMAIN\Exclude"} | Select-Object Account foreach ($user in $users) { $removalAccount = $user.Account Write-Host "Removing account - $($removalAccount)" Remove-NTFSAccess -Path $path -Account $removalAccount -AccessRights FullControl -AccessType Allow Remove-NTFSAccess -Path $path -Account $removalAccount -AccessRights FullControl -AccessType Deny } 

一般来说, Get-AclSet-Acl应该能够完成你所需要的。 但是,由于权限不足(除非您有权更改所有权),Get-Acl具有令人烦恼的限制,可能表明无法使用Set-Acl将修改后的ACL写回。 关于这个问题的更多信息可以在这个SO问题中find。

在任何情况下,对于文件系统权限,您都可以使用Get-Item返回的对象中的方法来解决Get-Acl的限制。

 $acl = (Get-Item C:\myfolder).GetAccessControl('Access') 

如果检查返回对象的$acl.Access属性,则会发现它是FileSystemAccessRule对象(又名ACE对象)的集合。 最终,您希望find与您尝试删除的用户相匹配的那些ACE的子集,并忽略所有inheritance的ACE。 你实际上不能删除inheritance的ACE,即使你尝试使用GUI删除它们,Windows资源pipe理器也会告诉你。 无论如何,下面是你如何获得ACE的子集。

 $acesToRemove = $acl.Access | ?{ $_.IsInherited -eq $false -and $_.IdentityReference -eq 'MYCOMPUTER\myuser' } 

现在您已经删除了ACE,您只需将它们从原始ACL中删除并将其写回文件夹即可。

 $acl.RemoveAccessRuleAll($acesToRemove) Set-Acl -AclObject $acl C:\myfolder\ 

我设法使用zoredache推荐的NTFSSecurity模块来工作。

 Remove-NTFSAccess -AccessRights FullControl -Account DOMAIN\Group -Path c:\temp -AccessType Deny -AppliesTo ThisFolderSubfoldersAndFiles Remove-NTFSAccess -AccessRights FullControl -Account DOMAIN\Group -Path c:\temp -AccessType Allow -AppliesTo ThisFolderSubfoldersAndFiles 

以上两个命令已将所有安全性删除,并且用户/组已从权限列表中消失。 我可能会做更多的调查,看看这是否可以精简,但它确实是我所需要的。

谢谢你的帮助。