我正在尝试从网络共享的所有子目录中删除用户。
我尝试了以下命令: ICACLS X:\ /remove:g username /T
该命令运行无故障(尽管由于分片驱动器的大小,它需要3.5小时),但在我检查权限后,用户的权限没有从任何地方删除。
如果我导航到用户有权访问的特定文件夹,并在那里运行命令(例如ICACLS:\subdirectory /remove:g username /T ),它就能正常工作。
这个问题似乎只有在我尝试从根目录X:\运行它时才会发生,在这种情况下,不会删除任何权限。
你知道为什么会出现这种情况吗?
附注:我在运行命令时所使用的帐户上的root用户上具有F访问权限
发布于 2021-10-22 05:59:43
应该用icacls /T
来做。除非运行该命令的用户无法读取某些目录。但是,如果在文件夹上启用了继承,则可能到处都有管理员。
一个简单的PS脚本就可以做到这一点。通过对$acl | Set-Acl
进行一些尝试/捕获,这可以用作非特权会话中的干模式。对于特权会话,这将有效地替换目录上的ACL。
$path = "X:"
$username = "Domain\User"
Get-Item -Path $path -Directory -Recurse | %{
$acl = Get-Acl -Path $_.FullName
$aces = $acl.Access | Where-Object { -not $_.IsInherited -and $_.IdentityReference.Value -eq $username }
if ($aces -ne $null -and $aces.Count -gt 0) {
Write-Host "Found $($aces.Count) ACE granted for $username on $($_.FullName)"
foreach($ace in $aces) {
$acl.RemoveAccessRule($ace)
}
$acl | Set-Acl -Path $_.FullName
}
}
https://stackoverflow.com/questions/69585402
复制