Назад | Перейти на главную страницу

Назначьте групповые разрешения для папок с помощью Powershell через CSV

мы работаем над новой концепцией разрешений. Мы создали разные группы безопасности в зависимости от отдела.

Например:

Finance_List, Finance_Read, Finance_ReadWrite
Controlling_List, Controlling_Read, Controlling_ReadWrite
Planning_List, Planning_Read, Planning_ReadWrite

Теперь я ищу сценарий для автоматизации процесса установки GroupPermissions для определенных папок.

Пример:
Папка Финансы:
Отключить наследование а затем установите новые разрешения и замените их для всех файлов и подпапок: Группа Finance_List (Папка списка), Группа Finance_Read (Читать), Группа Finance_ReadWrite (Изменить)

Пример CSV (путь к папке и 3 разрешения для каждой папки):

\\cifs\Finance;Finance_List;Finance_Read;Finance_ReadWrite

У меня 300 групп безопасности и 100 папок.

Любая помощь приветствуется.

Спасибо!

Следующее должно дать вам то, что вам нужно (убедитесь, что группы в вашем CSV соответствуют имени группы в AD, иначе это не будет работать правильно):

$Folders = Import-Csv "C:\Scripts\Folders.csv" -Delimiter ";" -Header "Path","List","Read","ReadWrite"

ForEach ($F in $Folders) {
    $ACL = Get-Acl $F.Path

    # Set the first parameter to $true to disable inheritance
    # Set the second parameter to $false if you don't want to retain a copy the permissions to this folder.
    # Set the second parameter to $true if you want to retain a copy of the inherited permissions.
    $ACL.SetAccessRuleProtection($true, $true)

    # 'ReadData' grants List Folder / Read Data
    $List = New-object System.Security.AccessControl.FileSystemAccessRule($F.List,"ReadData","Allow")
    $ACL.SetAccessRule($List)

    # 'ReadAndExecute' grants Traverse Folder / Execute File
    # 'Read' only grants List Folder / Read Data
    $Read = New-object System.Security.AccessControl.FileSystemAccessRule($F.List,"ReadAndExecute","Allow")
    $ACL.SetAccessRule($Read)

    $ReadWrite = New-object System.Security.AccessControl.FileSystemAccessRule($F.ReadWrite,"Modify","Allow")
    $ACL.SetAccessRule($ReadWrite)

    $ACL | Set-Acl $F.Path
}

На этом веб-сайте есть хорошие примеры того, как изменить это при необходимости, а также список различных прав доступа и их эквивалента для Powershell. Как управлять ACL файловой системы с помощью сценариев PowerShell