我正在寻找一个代码示例,展示如何修改给定 Active Directory 对象(在我的情况下是组织单位)上的权限集,其中给定安全主体的权限将被另一个安全主体替换,类似于资源工具包实用程序subinacl
正在使用以下语法对文件系统和注册表 ACL 进行操作subinacl [...] replace=olduser=newuser [...]
。
我尝试使用一系列Get-ACL(Get-ADOrganizationalUnit [...]).DistinguishedName
和Set-ACL -InputObject [...]
调用来提出一种优雅的方法,但似乎无法弄清楚如何用Get-ACL
所需的标识符替换 ACL 对象中返回的用户/组标识符。
任何见解都值得赞赏。
答案1
我创建了一个通用CopyDsAcl
函数,托管在我的 bitbucket 上,执行此类目录服务 ACL 复制。欢迎您将其用作参考或工具。欢迎反馈。
要将 OU“someOU”上“olduser”的 ACE 替换为“newuser”的 ACE,您可以执行以下操作:
CopyDsAcl -sourcePrincipal (Get-ADUser olduser) -sourceObject (Get-ADOrganizationalUnit "OU=someOU,DC=example,DC=com") -targetPrincipal (Get-ADUser newuser) -removeSourceAces
这些文章对于找到将 .NET、AD 和 ACL 结合在一起的方法非常有帮助: