我正在尝试编写一个脚本,将文件夹的安全权限链接到现有的AD组。我还没有找到任何脚本或cmdlet(Set-Acl无法链接到组,只有显式权限),这允许我编写脚本。
例如,我有一个名为“FOLDER A”的文件夹和一个名为“FOLDER A”的AD安全组。有没有办法将AD组添加到文件夹的安全性?
文件夹权限示例中的AD组:
编辑:我可能在serverfault上找到了解决方案。我可以使用Get-ADGroup cmdlet查找每个组的SID,然后为Set-Acl传递IdentityReference。将测试这个,看看我是否可以让它工作
在处理文件系统权限时,我总是使用NTFSSecurity模块。这个模块中的命令比Set-Acl
更容易理解,因为它们的行为方式与GUI相同。
要向文件夹添加权限,它只是一个命令:
Add-NTFSAccess -Path 'C:\Folder A' -Account 'Domain\Folder A' -AccessRights Read
值得阅读文档链接,因为模块可以做的不仅仅是添加权限!
注意:您需要安装模块,如果您使用的是现代版本的Powershell,这很简单,因为您可以使用Install-Module -Name NTFSSecurity
。如果是旧版本,则需要手动下载并安装模块。
我终于找到了解决问题的方法。感谢James C. - 虽然我无法用你的方法弄明白,但我相信它确实指出了我正确的方向。
我基本上使用了FileSystemAccessRule
constructor。我清楚的那一刻是认识到我实际上可以引用AD组。我对Powershell很新,所以这对我来说并不是很明显。这是实施:
$acl = Get-Acl <PATH OF FOLDER>
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule('<NAME OF GROUP>','<PERMISSIONS>,'<Allow/Deny>')
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl <PATH OF FOLDER>
可以在here找到构造函数的完整文档。然后我使用Python脚本格式化csv中的所有数据并循环遍历它以创建组。
感谢大家!