通过 CSV 使用 Powershell 分配文件夹的组权限

通过 CSV 使用 Powershell 分配文件夹的组权限

我们正在研究一种新的权限概念。我们根据部门创建了不同的安全组。

例如:

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

现在,我正在寻找一个脚本来自动执行在特定文件夹上设置 GroupPermissions 的过程。

例子:
文件夹财务
禁用继承然后设置新的权限并将其替换到所有文件和子文件夹: 集团财务_列表(列表文件夹),集团财务_阅读(阅读),小组财经_读写(调整)

CSV 示例(文件夹路径和每个文件夹的 3 个 GroupPermissions):

\\cifs\Finance;Finance_List;Finance_Read;Finance_ReadWrite

我有 300 个安全组和 100 个文件夹。

任何帮助将非常感激。

谢谢你!

答案1

以下内容应该可以满足您的需要(请确保您的 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 等效项的列表。 如何使用 PowerShell 脚本管理文件系统 ACL

相关内容