删除用户在所有子目录中的 NTFS 权限

Remove NTFS permissions of a user in all subdirectories

我正在编写一个脚本,如果帐户超过 7 天,该脚本将删除特定用户。
但是当用户被删除时,我的文件服务器上的 NTFS 权限仍然存在。
如何使用 PowerShell 删除特定用户的所有权限?

您应该永远不要 向单个用户授予权限(主目录和用户配置文件除外)。正如您自己看到的那样,清理起来很麻烦。 始终 创建代表需要访问的特定 functions/roles 的组,并向这些组授予权限。

您可以通过icacls清理权限:

icacls C:\root\folder /remove DOMAIN\user /t /c

但是请注意,您必须在删除帐户之前执行此操作,因为由于某些原因icacls无法清除已删除帐户的 SID。

如果您已经删除了该帐户,您可以尝试使用 Get-AclSet-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 的条件。

另请注意,对于 files/folders 所有者既不是用户 运行 代码也不是他的组之一的情况,上述操作将失败。在这种情况下,您可以在 ServerFault 上使用 subinacl or SetACL as a last resort, as described in the answers to this question 等工具。