如何修改PowerShell脚本实现递归设置文件夹权限?
解决PowerShell权限递归应用问题
原脚本的核心问题是未设置权限的继承与传播规则,导致权限仅作用于根文件夹。以下是修改后的脚本及关键说明:
修改后的完整脚本
$csv = Import-Csv -Path "C:\temp\perms.csv" ForEach ($item In $csv) { $acl = Get-Acl $item.folder # 创建带递归继承的权限规则 $AddPerm = New-Object System.Security.AccessControl.FileSystemAccessRule( $item.group, "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow" ) $acl.SetAccessRule($AddPerm) $acl | Set-Acl $item.folder Write-Host -ForegroundColor Green "已为文件夹 $($item.folder) 添加用户组 $($item.group) 的完全控制权限(含子文件夹及文件)" }
关键修改说明
完善权限规则的继承参数
新增的两个参数是实现递归的核心:ContainerInherit,ObjectInherit:指定权限会被**所有子文件夹(容器)和文件(对象)**继承None:表示权限直接应用到当前文件夹,同时无限制地传递给所有子继承对象
修正提示信息
原脚本的Group created提示不符合实际操作(脚本仅添加权限,不创建用户组),已改为准确的权限添加提示
额外注意事项
- 运行脚本需拥有目标文件夹的权限修改权限(建议以管理员身份执行)
- CSV文件需包含
folder(目标文件夹路径)和group(用户组名称)两列,格式示例:folder,group C:\Projects\Demo,Domain\DevTeam C:\Data\Archive,Domain\ReadOnlyUsers - 若需保留用户组现有权限并追加完全控制,可将
$acl.SetAccessRule($AddPerm)替换为$acl.AddAccessRule($AddPerm)(SetAccessRule会替换该用户组的现有权限规则,AddAccessRule则追加规则)
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

