PowerShell脚本中为Authenticated Users分配D盘权限失败问题排查
问题排查与修复方案
你的脚本里icacls的权限分配语法出错了,这就是权限没正确配置的核心原因:
- 首先,
Modify(M)权限本身就包含了Write(W)权限,没必要同时指定;而且icacls不支持M,W这种写法来组合权限。 - 其次,默认情况下
icacls只给当前目录分配权限,不会继承到子目录和文件,如果你需要权限向下传递,得加上继承标识。
修正后的脚本
$systemDrives = Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Name -eq "D" } foreach ($driveLetter in $systemDrives) { $path = $driveLetter.Root # 静默移除Authenticated Users的权限 icacls $path /remove "Authenticated Users" /q # 分配带继承的Modify权限(已包含Write) icacls $path /grant "Authenticated Users:(OI)(CI)M" /q }
关键细节说明
(OI)(CI)是继承标识:(OI)让权限应用到目录下的文件,(CI)让权限应用到子目录,缺省的话权限只停留在D盘根目录本身M代表Modify权限,涵盖了Write、Read & Execute、List Folder Contents、Read这些权限,完全满足你的需求/q参数用来静默执行,避免每次操作都弹出确认提示- 如果确实只需要单独的Write权限(不需要Modify包含的其他权限),可以把权限部分改成:
"Authenticated Users:(OI)(CI)W"
内容的提问来源于stack exchange,提问作者snehasish nandy
相关产品推荐
相关产品推荐

