如何通过PowerShell获取本地Active Directory安全选项卡的Inherited from列
获取AD用户对象权限的“Inherited from”信息
你可以通过Get-Acl返回的访问规则对象的InheritanceSource属性获取继承来源,结合IsInherited判断权限是否为继承而来。以下是具体实现:
示例代码
# 导入AD模块(如果未加载) Import-Module ActiveDirectory # 替换为目标用户的DN $userDN = "CN=John Doe,OU=Users,DC=contoso,DC=com" # 获取用户对象的ACL $acl = Get-Acl "AD:\$userDN" # 提取权限信息,包含Inherited from列 $acl.Access | Select-Object ` IdentityReference, AccessControlType, ActiveDirectoryRights, IsInherited, @{ Name = 'InheritedFrom' Expression = { if ($_.IsInherited) { # 去掉AD:\前缀,得到和dsa.msc一致的DN格式 $_.InheritanceSource -replace '^AD:\\', '' } else { # 直接分配的权限,对应界面中的空值 '直接分配' } } }
关键属性说明
- IsInherited:布尔值,标记该权限是继承自父对象还是直接分配给当前用户
- InheritanceSource:当
IsInherited为True时,返回继承来源对象的完整AD路径(格式为AD:\<对象DN>),通过字符串替换可得到与dsa.msc界面完全一致的“Inherited from”列内容
注意事项
- 需确保运行PowerShell的账号拥有读取目标AD对象权限的权限
- 该方法适用于PowerShell 5.1及以上版本的Active Directory模块
内容的提问来源于stack exchange,提问作者Sean21735
相关产品推荐
相关产品推荐

