You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10系统PowerShell获取文件夹ACL权限命令无响应问题咨询

PowerShell获取文件夹ACL命令在Windows 10运行卡顿的解决思路

问题根因说明

这段代码在Windows Server和Windows 10上表现不一致,主要是三个核心问题导致:

  • 代码中"$BUILTIN\\Users"的写法存在变量解析错误:双引号内的$开头字符会被PowerShell识别为变量,未定义$BUILTIN变量时匹配规则会失效,Windows Server环境可能存在预定义的同名环境变量所以运行正常,Windows 10默认无该变量导致匹配逻辑异常
  • Windows 10的UAC权限管控比Windows Server更严格,非管理员身份访问C:\Program Files目录的ACL时会触发权限校验阻塞,甚至无响应
  • 命令中icacls带/T参数会递归遍历目录下所有子项,如果目录内文件数量多、存在权限拒绝的子项,会出现长时间无输出的卡顿现象

具体解决步骤

  • 运行PowerShell前先右键选择「以管理员身份运行」,解除UAC权限限制
  • 修正匹配规则的变量解析问题,用精准的相等判断替代正则匹配,避免不必要的匹配开销和误判
  • 分步运行命令定位卡顿点:先单独执行Get-Acl命令确认权限读取正常,再执行后续的权限移除操作,避免一步执行无法定位问题
  • 测试阶段可以先去掉icacls的/T递归参数,确认当前目录逻辑运行正常后再增加递归配置
  • 增加调试输出,实时查看命令执行进度,避免误认为无响应

修正后的示例代码

# 读取目标目录ACL,精准匹配BUILTIN\Users组权限
$folderPermissionList = (Get-Acl -Path "C:\Program Files\Logs").Access | Where-Object { $_.IdentityReference.Value -eq 'BUILTIN\Users' }

# 输出权限信息用于调试
Write-Host "已获取Users组权限:" $folderPermissionList.FileSystemRights

If($folderPermissionList.FileSystemRights -match "FullControl")
{
    Write-Host "检测到FullControl权限,开始执行移除操作..."
    & icacls.exe "C:\Program Files\Logs" /Q /T /remove "BUILTIN\Users"
    Write-Host "权限移除操作执行完成"
}

内容的提问来源于stack exchange,提问作者saravana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:36:02