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

使用PowerShell移除Authenticated Users写入修改权限失败求排查

问题分析与修复方案

原代码的问题所在

  1. 错误处理icacls输出:icacls $driveLetter.Root返回的是纯文本字符串,并非可操作的权限对象。你调用的$permissions.Remove(...)是字符串的字符删除方法,根本无法移除权限条目,完全起不到修改权限的作用。
  2. 权限设置逻辑错误:直接把icacls的输出文本当作参数传给icacls命令,不符合icacls的语法规则,icacls无法识别这种方式来设置权限。

正确的实现代码

要移除Authenticated Users组的写入(W)和修改(M)权限,直接使用icacls自带的权限移除参数即可,无需先读取再修改权限字符串。修改后的代码如下:

$systemDrives = Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Name -eq "H" }

foreach ($drive in $systemDrives) {
    # 移除Authenticated Users的写入和修改权限,递归处理子项且忽略错误
    icacls $drive.Root /remove:g "Authenticated Users:(W,M)" /T /C
}

参数解释

  • /remove:g:专门用来移除给用户/组已授予的权限(若需移除拒绝权限则用/remove:d)
  • (W,M):明确指定要移除的写入(Write)和修改(Modify)权限
  • /T:递归处理该路径下的所有子目录和文件(不需要递归可删除此参数)
  • /C:遇到错误时继续执行,不会因单个文件/目录的权限问题中断整个操作

额外提醒

  • 必须以管理员身份运行PowerShell,否则没有修改磁盘根目录权限的权限
  • 如果目标权限是从父目录继承来的,需先将继承权限转为直接分配的权限,再执行移除命令:
    icacls $drive.Root /inheritance:d /C
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:10:04