如何使用PowerShell获取AD用户对象上的属性的有效权限

时间:2014-11-21 19:41:25

标签: powershell

有没有人知道如何为AD用户的属性生成ACL报告。 例如,谁拥有Active Directory用户“读取缩写”或“写入缩写”属性的权限。 我发现PowerShell命令可以在AD用户对象本身上获取ACL,但不能在属性级别获取ACL。

1 个答案:

答案 0 :(得分:2)

查看PowerShell Access Control module。 3.0版本在PowerShell中几乎完全实现,与使用Get-Acl相比,它的速度相当慢,但我认为它可以做你要求的(并且我正在处理速度问题)。 / p>

它有一个名为Get-EffectiveAccess的函数,可以计算主体对安全对象的有效访问权限,但我不认为这是您正在寻找的内容。听起来你想获得一个ACE列表,这些ACE提供读/写首字母的访问权限。属性。为此,您将使用Get-AccessControlEntry:

# Get any ACEs that grant or deny read or write access to the 'initials' property:
Get-ADUser TestUser | Get-AccessControlEntry -ObjectAceType initials

# Get any ACEs that grant or deny write access to the 'initials' property:
Get-ADUser TestUser | Get-AccessControlEntry -ObjectAceType initials -ActiveDirectoryRights WriteProperty

# Get any ACEs that grant write access to the 'initials' property:
Get-ADUser TestUser | Get-AccessControlEntry -ObjectAceType initials -ActiveDirectoryRights WriteProperty -AceType AccessAllowed

这些示例都使用Get-ADUser来查找单个用户。无论是使用AD模块还是DirectorySearcher,您都应该能够为任何AD对象提供函数。您甚至可以将可分辨名称作为-Path参数提供给函数。

-ObjectAceType参数应该能够获取GUID,或者您可以放入一个或多个属性/属性设置/验证的写/扩展权限/类对象名称(您可以使用*作为通配符)。

如果您确实想要计算实际有效访问权限,以下是Get-EffectiveAccess函数的一些示例:

# Get effective access that 'AnotherUser' has over 'TestUser' object (this doesn't include property, property set, validated write, etc effective permissions):
Get-ADUser TestUser | Get-EffectiveAccess -Principal AnotherUser

# Same as before, but this time include effective access down to the ObjectAceType level:
Get-ADUser TestUser | Get-EffectiveAccess -Principal AnotherUser -ObjectAceTypes initials
Get-ADUser TestUser | Get-EffectiveAccess -Principal AnotherUser -ObjectAceTypes init*

在处理最后几个示例时,我注意到使用带有-ObjectAceTypes参数的Get-EffectiveAccess时会写入一些错误,即使该函数似乎正常工作。如果我有周末的时间,我可以解决这个问题,但我可能只是等待4.0版。