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

如何修改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) 的完全控制权限(含子文件夹及文件)"
}

关键修改说明

  1. 完善权限规则的继承参数
    新增的两个参数是实现递归的核心:

    • ContainerInherit,ObjectInherit:指定权限会被**所有子文件夹(容器)和文件(对象)**继承
    • None:表示权限直接应用到当前文件夹,同时无限制地传递给所有子继承对象
  2. 修正提示信息
    原脚本的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:25:56