编写脚本以验证我的服务器属于某个组。从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服务器等原因找不到任何模式。有没有人遇到过这种行为?
答案 0 :(得分:1)
您正在查询全局目录。全球目录(也称为 部分属性集)仅包含属性的子集 所有属性。仅对于通用组,成员属性才能保证在全局编录中可用。与您要查询的全局编录不在同一域中的域本地和全局组的成员身份信息将不可用。
如果member属性不包含任何值,即使您的全局编录与要查询的组所在的域位于同一个域,该成员属性也将不可用。
答案 1 :(得分:1)
我认为Jon试图提出的一点是成员属性未复制到全局编录,因此如果您尝试通过定位全局编录来枚举组成员身份,那么'不会得到有效的结果。只有当您查询通用安全组的成员资格时才会获得结果,因为其成员资格将存在于所有全局目录中。
此外,在枚举组成员资格时要谨慎一点 - 测试脚本以确保它们可以检测嵌套成员资格中的循环循环总是好的,否则存在脚本的可能性无限奔跑。
通常,要枚举组成员身份,您应该绑定到目标域中的域控制器。