我们正在研究一种新的权限概念。我们根据部门创建了不同的安全组。
例如:
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