我正在尝试以编程方式更新 AD 中“已删除对象”容器的 ACL 权限,但我无法验证当前权限。通常我会在专有名称上使用
Get-ACL
,但是此命令返回“无法找到路径 {DN},因为它不存在”
我以域管理员身份运行它,我可以通过
Get-ADObject -SearchBase ((Get-ADDomain).DeletedObjectsContainer) -Filter * -IncludeDeletedObjects -SearchScope Base
确认该容器确实存在。问题似乎是“已删除对象”容器本身被标记为 isDeleted,这会阻止 Get-ACL 读取它。
使用
dsacls
(如here所述)确实有效,如果我通过 psexec 将其作为系统运行,尽管输出并不理想,因为我必须先对其进行处理,然后才能对其进行验证。是否有另一种方法可以使用 PowerShell 查询此信息并返回更清晰的输出?
https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/non-administrators-view-deleted-object-container
你说得对,你确实要特别对待它,因为它被“删除”了。
你们非常亲密。您可以返回 AD 对象的 nTSecurityDescriptor 属性,这将得到您想要的东西。
$delObjContainer = Get-ADObject -Filter 'objectClass -eq "container"' -SearchBase (Get-ADDomain).DeletedObjectsContainer -Properties nTSecurityDescriptor -IncludeDeletedObjects -SearchScope base
$delObjContainer.nTSecurityDescriptor.Access
# ActiveDirectoryRights : CreateChild, DeleteChild, ListChildren, ReadProperty, Delete, GenericWrite, WriteDacl, WriteOwner
# InheritanceType : None
# ObjectType : 00000000-0000-0000-0000-000000000000
# InheritedObjectType : 00000000-0000-0000-0000-000000000000
# ObjectFlags : None
# AccessControlType : Allow
# IdentityReference : NT AUTHORITY\SYSTEM
# IsInherited : False
# InheritanceFlags : None
# PropagationFlags : None