【问题标题】:Setting file permissions on a large amount of files using PowerShell使用 PowerShell 对大量文件设置文件权限
【发布时间】:2019-05-01 06:57:54
【问题描述】:

我有两个文件,一个包含安全组列表,另一个包含相应的文件夹路径。我需要做的就是遍历这些文件并将正确的安全组递归 RW 访问应用于正确的文件夹。

因此第 1 行的安全组将应用于第 1 行的文件夹。

Powershell 脚本:

foreach ($group in gc c:\temp\securitygroups.txt) {
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($group, 'Modify','ContainerInherit,ObjectInherit', 'None', 'Allow')

    foreach ($folder in gc c:\temp\folders.txt) {
        $acl = Get-Acl $folder
        $acl.SetAccessRule($rule)
        Set-Acl $folder $acl
    }
}

securitygroups.txt:

安全组1 安全组2 安全组 3 安全组4 安全组5 安全组6 安全组7 安全组8 安全组9 安全组10

folders.txt:

D:\shares\projects\project1 D:\shares\projects\project2 D:\shares\projects\project3 D:\shares\projects\project4 D:\shares\projects\project5 D:\shares\projects\project6 D:\shares\projects\project7 D:\shares\projects\project8 D:\shares\projects\project9 D:\shares\projects\project10

目前securitygroups.txt中的每个安全组都被添加到列表中的每个文件夹中,这不是我想要的,我想要securitygroup1添加到project1securitygroup2添加到project2等.

【问题讨论】:

    标签: powershell file-permissions windows-scripting


    【解决方案1】:

    将两个文件读入变量,然后使用for 循环同时遍历两个数组:

    $groups  = Get-Content 'c:\temp\securitygroups.txt'
    $folders = Get-Content 'c:\temp\folders.txt'
    
    for ($i=0; $i -lt $folders.Count; $i++) {
        $rule = New-Object Security.AccessControl.FileSystemAccessRule ($groups[$i], 'Modify', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
        $acl = Get-Acl $folders[$i]
        $acl.SetAccessRule($rule)
        Set-Acl $folders[$i] $acl
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 2013-01-12
      • 1970-01-01
      相关资源
      最近更新 更多