Настройка прав доступа к большому количеству файлов с помощью PowerShell - PullRequest
0 голосов
/ 01 мая 2019

У меня есть два файла, один со списком групп безопасности и один с соответствующим путем к папке.Все, что мне нужно сделать, это перебрать эти файлы и применить правильный рекурсивный доступ 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:

securitygroup1
securitygroup2
securitygroup3
securitygroup4
securitygroup5
securitygroup6
securitygroup7
securitygroup8
securitygroup9
securitygroup10

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 добавление к project1, securitygroup2 добавление к project2 и т. д.

1 Ответ

0 голосов
/ 01 мая 2019

Считайте оба файла в переменные, затем используйте цикл 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
}
...