我正在编写一个脚本,如果帐户超过7天,将删除特定用户 但是当用户被删除时,我的文件服务器上的NTFS权限仍然存在 如何使用PowerShell删除特定用户的所有权限?
答案 0 :(得分:3)
您永远不会向各个用户授予权限(主目录和用户配置文件除外)。正如你自己可以看到的,清理它是一团糟。 始终创建表示需要访问的特定功能/角色的组,并为这些组授予权限。
您可以通过icacls
清除权限:
icacls C:\root\folder /remove DOMAIN\user /t /c
但请注意,在删除帐户之前必须执行此操作,因为某些原因icacls
无法清除已删除帐户的SID。
如果您已删除该帐户,可以尝试使用Get-Acl
和Set-Acl
修复权限:
Get-ChildItem C:\root\folder -Recurse -Force | ForEach-Object {
$acl = Get-Acl -LiteralPath $_.FullName
$ace = $acl.Access | Where-Object { $_.IdentityReference -like 'S-1-5-*' }
$acl.RemoveAccessRule($ace) | Out-Null
Set-Acl -LiteralPath $_.FullName -AclObject $acl
}
请注意,您可能需要调整条件以选择要从文件或文件夹的ACL中删除的ACE。
另请注意,对于所有者不是运行代码的用户或其中一个组的文件/文件夹,上述操作将失败。在这种情况下,您可以使用subinacl
或SetACL
等工具作为最后的手段,如ServerFault上this question的答案所述。