【问题标题】:Linking folder security to AD security groups Powershell script将文件夹安全性链接到 AD 安全组 Powershell 脚本
【发布时间】:2019-02-08 13:59:00
【问题描述】:
我正在尝试编写将文件夹的安全权限链接到现有 AD 组的脚本。我还没有找到任何允许我编写脚本的脚本或 cmdlet(Set-Acl 无法链接到组,只有明确的权限)。
例如,我有一个名为“FOLDER A”的文件夹和一个名为“FOLDER A”的 AD 安全组。有什么方法可以将 AD 组添加到文件夹的安全性中?
文件夹权限内的 AD 组示例:
编辑:我可能已经找到了关于 serverfault 的解决方案。我可以使用 Get-ADGroup cmdlet 来查找每个组的 SID,然后为 Set-Acl 传递 IdentityReference。将对此进行测试,看看我是否可以让它工作
【问题讨论】:
标签:
powershell
active-directory
ntfs
【解决方案1】:
在处理文件系统权限时,我总是使用NTFSSecurity 模块。此模块中的命令比Set-Acl 更容易理解,因为它们的作用与 GUI 相同。
要向文件夹添加权限,只需一个命令:
Add-NTFSAccess -Path 'C:\Folder A' -Account 'Domain\Folder A' -AccessRights Read
值得阅读文档链接,因为该模块可以做的不仅仅是添加权限!
注意:您确实需要安装模块,如果您使用的是现代版本的 Powershell,这很容易,因为您可以使用 Install-Module -Name NTFSSecurity。如果是旧版本,则需要手动下载并安装模块。
【解决方案2】:
我终于找到了解决问题的方法。感谢 James C. - 虽然我无法用你的方法弄清楚,但我相信它确实为我指明了正确的方向。
我基本上使用了FileSystemAccessRuleconstructor。我清醒的那一刻是意识到我实际上可以参考广告组。我对 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 中的所有数据并循环遍历它以创建组。
谢谢大家!