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

如何使用PowerShell批量修改2500个文件夹的ACL高级权限

Windows 文件夹批量高级权限配置PowerShell脚本方案

前置准备

  • 三个CSV文件格式统一,第一列表头为Path,每行存储对应安全组需要配置的文件夹绝对路径,示例CSV结构:
Path
E:\Share\Folder1
E:\Share\Folder2
  • 运行PowerShell的账号需具备目标文件夹的更改权限或所有者权限,建议使用文件服务器本地管理员/域管理员账号执行
  • 提前替换脚本内的域名、组名、CSV路径、模板文件夹路径为你实际环境的参数

步骤1:提取基准权限模板

你已经手动配置好符合要求的文件夹,直接提取该文件夹下对应安全组的权限规则作为模板,避免手动拼权限参数出错:

# 替换为你已经配置好的模板文件夹路径
$templatePath = "E:\Share\Dati\COMUNE\AreaPaghe\001A0093 - ABN SRL"
$templateAcl = Get-Acl -Path $templatePath

# 替换为你的实际域/主机名、对应安全组名,提取目标权限规则
$zonaParmaRule = $templateAcl.Access | Where-Object {$_.IdentityReference.Value -eq "你的域名\zona parma"}
$group2Rule = $templateAcl.Access | Where-Object {$_.IdentityReference.Value -eq "你的域名\group2"}
$group3Rule = $templateAcl.Access | Where-Object {$_.IdentityReference.Value -eq "你的域名\group3"}

步骤2:批量权限配置脚本

# 定义批量处理函数
function Set-FolderSpecialPermission {
    param(
        [string]$CsvPath,
        [System.Security.AccessControl.FileSystemAccessRule]$TargetRule,
        [string]$TargetGroupName
    )
    # 读取CSV内的所有文件夹路径
    $folderList = Import-Csv -Path $CsvPath -Encoding UTF8
    foreach ($folder in $folderList) {
        $path = $folder.Path.Trim()
        # 跳过不存在的路径
        if (-not (Test-Path -Path $path -PathType Container)) {
            Write-Warning "路径不存在:$path"
            continue
        }
        # 获取当前文件夹ACL
        $acl = Get-Acl -Path $path
        # 关闭权限继承,同时将继承权限转换为显式权限(满足需求1)
        $acl.SetAccessRuleProtection($true, $true)
        # 删除所有非目标安全组的权限
        foreach ($rule in $acl.Access) {
            if ($rule.IdentityReference.Value -ne $TargetGroupName) {
                $acl.RemoveAccessRule($rule) | Out-Null
            }
        }
        # 添加目标特殊权限规则
        $acl.AddAccessRule($TargetRule)
        # 应用ACL到文件夹
        Set-Acl -Path $path -AclObject $acl
        Write-Host "已完成权限配置:$path"
    }
}

# 批量处理三个安全组对应的文件夹,替换为你实际的CSV路径和组名
Set-FolderSpecialPermission -CsvPath "C:\config\zona_parma_paths.csv" -TargetRule $zonaParmaRule -TargetGroupName "你的域名\zona parma"
Set-FolderSpecialPermission -CsvPath "C:\config\group2_paths.csv" -TargetRule $group2Rule -TargetGroupName "你的域名\group2"
Set-FolderSpecialPermission -CsvPath "C:\config\group3_paths.csv" -TargetRule $group3Rule -TargetGroupName "你的域名\group3"

注意事项

  • 正式批量执行前,先单独拿2-3个测试文件夹验证权限配置结果,确认符合预期后再全量执行
  • 如果你的CSV文件编码为GBK,将Import-Csv的-Encoding UTF8参数改为-Encoding Default
  • 若需要将权限应用到文件夹下的子文件/子文件夹,可修改提取到的权限规则的InheritanceFlags和PropagationFlags属性,和你手动配置的模板保持一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:24:02