Powershell AD组对象中缺少成员属性

Powershell AD组对象中缺少成员属性,powershell,active-directory,Powershell,Active Directory,编写脚本以验证我的服务器是否属于某个组。从PowerShell代码开始 $root = [ADSI]'GC://dc=xx,dc=yyy,dc=zzz' $searcher = new-object System.DirectoryServices.DirectorySearcher($root) $searcher.filter = "(&(objectClass=Group)(Name=$groupName))" $groups = $searcher.findall() $grou

编写脚本以验证我的服务器是否属于某个组。从PowerShell代码开始

$root = [ADSI]'GC://dc=xx,dc=yyy,dc=zzz'
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.filter = "(&(objectClass=Group)(Name=$groupName))"
$groups = $searcher.findall()
$group = $groups[0]

这将返回变量$Group中的Active Directory组。有一半时间,此变量有一个名为“member”的属性,其中包含组中的所有服务器。另一半时间,该属性不会返回。由于用户、登录ADS服务器等原因,找不到任何模式。是否有人遇到此行为?

您正在查询全局编录。全局目录(也称为 部分属性集)仅包含属性的子集 在所有属性中。仅对于通用组,成员属性保证在全局目录中可用。与您正在查询的全局编录不在同一域中的域本地组和全局组的成员资格信息将不可用


如果成员属性不包含任何值,即使您的全局编录与正在查询的组位于同一域中,该成员属性也将不可用

我认为Jon试图说明的一点是,member属性没有复制到全局编录,因此如果您试图通过定位全局编录来枚举组成员身份,则不会得到有效的结果。只有在查询universal security组的成员资格时才能返回结果,因为该组的成员资格将位于所有全局目录中

此外,在枚举组成员身份时需要注意一点—测试脚本以确保它们能够检测嵌套成员身份中的循环总是很好的,否则存在脚本无限运行的可能性


通常,要枚举组成员身份,您应该绑定到目标域中的域控制器。

感谢您的解释,全局计算机组与运行脚本的用户和计算机位于同一域中,因此这不应该是问题。成员属性由>80台服务器填充,并且确实为某些用户显示。