使用 powershell 在 Active Directory 对象的 ACL 中设置 "Write member attribute"

Setting "Write member attribute" in ACL on Active Directory object with powershell

我想以编程方式允许 AD 中的给定安全主体(用户或组)对 AD 组的 member 属性具有写入权限。

我假设它的形式是:

$GroupObject = Get-ADGroup $group
$ACL = Get-ACL AD:$GroupObject
$ACE = New-Object System.Security.AccessControl.ActiveDirectoryAccessRule (
    $manager,
    ...
)
$ACL.AddAccessRule($ACE)
Set-ACL -Path AD:$GroupObject -AclObject $ACL

我找不到关于 ... 中还需要什么才能使这项工作正常进行的文档。事实证明,即使是手动潜水并检查生成的 ACL 对象也很困难!

您将为 ActiveDirectoryAccessRule 使用此构造函数:https://msdn.microsoft.com/en-us/library/cawwkf0x(v=vs.110).aspx

它应该看起来像这样:

$ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
    $manager.SID,
    [System.DirectoryServices.ActiveDirectoryRights]::WriteProperty,
    [System.Security.AccessControl.AccessControlType]::Allow,
    "bf9679c0-0de6-11d0-a285-00aa003049e2",
    [DirectoryServices.ActiveDirectorySecurityInheritance]::All
)

请注意,您需要传递用户的 SID ($manager.SID)。

神秘的GUID是member属性的GUID。您可以通过查看属性的 Microsoft 文档找到它。这是 member 的页面,您可以在其中找到 "System-Id-Guid":https://msdn.microsoft.com/en-us/library/ms677097(v=vs.85).aspx