如何使用PowerShell删除指定账户对所有子文件夹的权限
权限批量移除方案
方法1:使用系统内置icacls工具(推荐)
icacls是Windows自带的权限管理工具,原生支持递归操作,不需要手动处理遍历逻辑、继承关系,实现起来最简单稳定:
# 递归移除目标路径及所有子项中指定账户的全部权限 icacls $folderPath /remove:g "BUILTIN\Users" /t /c
参数说明:
/remove:g:清除指定账户的所有授予类权限/t:递归应用到目标路径下的所有子文件夹、子文件/c:遇到权限不足等错误时继续执行后续操作,不会中途终止
如果子文件夹已经手动禁用了继承,该命令也会自动处理子项内的显式权限,不需要额外操作。
方法2:纯PowerShell原生实现
如果需要完全使用PowerShell cmdlet实现,也不需要手动排序子文件夹,直接使用Get-ChildItem的递归参数即可:
# 配置变量 $folderPath = "替换为你的目标文件夹路径" $targetAccount = [System.Security.Principal.NTAccount]'BUILTIN\Users' # 处理根文件夹权限 $rootAcl = Get-Acl $folderPath # 若不需要禁用根目录继承,可删除下一行 $rootAcl.SetAccessRuleProtection($true, $true) $rootAcl.PurgeAccessRules($targetAccount) Set-Acl $folderPath $rootAcl # 递归处理所有子文件夹 Get-ChildItem -Path $folderPath -Directory -Recurse -Force | ForEach-Object { $subAcl = Get-Acl $_.FullName $subAcl.PurgeAccessRules($targetAccount) Set-Acl $_.FullName $subAcl }
对于没有禁用继承的子文件夹,根目录权限修改后继承的对应权限会自动失效,上述脚本只会额外清理已禁用继承的子文件夹中的显式权限,不会产生冗余操作。
内容的提问来源于stack exchange,提问作者managerger
相关产品推荐
相关产品推荐

