1

编写脚本来验证我的服务器是否属于一个组。从 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 组。一半的时间,这个变量有一个名为“成员”的属性,其中包含组中的所有服务器。另一半时间,该属性没有归还。由于用户、登录 ADS 服务器等原因,找不到任何模式。有人遇到过这种行为吗?

4

2 回答 2

1

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

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

于 2012-04-24T19:53:46.053 回答
1

我认为 Jon 试图说明的一点是member属性不会复制到全局目录中,因此如果您尝试通过针对全局目录来枚举组成员身份,您将不会获得有效的结果。只有在查询通用安全组的成员身份时才能返回结果,因为它的成员身份将在所有全局目录中。

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

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

于 2013-01-17T01:22:44.230 回答