在具有信任关系的情况下,查询组成员的Active Directory时,结果不完整

我们正在尝试查询Active Directory中所有属于某个组的成员的机器列表,以及诸如OperatingSystem属性之类的信息。 我们无法得到每个小组成员的结果。

环境详情:

  • 多个域控制器,运行Windows Server 2003和2008 R2。
  • 多个域,域之间具有信任关系。
  • 从Windows Server 2008 R2机器运行AD查询。
  • 查询AD的帐户是“本地pipe理员帐户,该域的成员,在该服务器上具有pipe理权限”。
  • 我们被告知有些机器是“通过信任关系成为小组的成员”。

我们目前的testing组“Group-99”有两台机器:FOO10和FOO11。

当我们查询小组成员时,我们收到预期的结果,小组中所有机器的列表:

PS > dsquery group -name "Group-99" | dsget group -members "CN=FOO10,OU=Domain Controllers,DC=activedirdev,DC=widgetco,DC=com" "CN=FOO11,OU=Portland,OU=Domain Controllers,DC=activedirdev,DC=widgetco,DC=com" 

然后,我们查询DNSHostName和OperatingSystem,但只能接收两台机器之一的结果:

 PS > dsquery * -filter "(&(objectClass=Computer)(objectCategory=Computer)(sAMAccountName=FOO11$))" -attr sAMAccountName operatingSystem sAMAccountName operatingSystem FOO11$ Windows Server 2008 R2 Standard PS > dsquery * -filter "(&(objectClass=Computer)(objectCategory=Computer)(sAMAccountName=FOO10$))" -attr sAMAccountName operatingSystem PS > 

我们都不是Active Directory向导,所以我们不确定问题出在哪里。 调整Active Directory设置是不可能的。

你能帮我们弄清楚如何获得我们需要的信息,或者甚至有可能得到它吗?

后续澄清:我们的完美结果将是一种方法来发出一个查询,将返回所有组成员的结果,无论他们在哪个领域。 就像是:

 PS > dsquery (stuff) CN operatingSystem FOO10 Windows Server 2008 R2 Standard FOO11 Windows Server 2003 

您正在查询的对象看起来像存在于另一个域中。 在不指定要联系的服务器或域的情况下运行DSQuery时,您将自动绑定到您login的域。 该对象可能在另一个域中。

要获取缺失的对象,请尝试

 dsquery * -filter "(&(objectClass=Computer)(objectCategory=Computer)(sAMAccountName=FOO10$))" -attr sAMAccountName operatingSystem -d activedirdev.widgetco.com 

参考: http : //technet.microsoft.com/en-us/library/cc754232.aspx

正如HopelessN00b已经提到的,拥有FOO10的commonName并不一定意味着sAMAccountName是FOO10$ (尽pipe很可能)。

找出是否是这种情况,直接检索对象而不是search它:

 dsget computer "CN=FOO10,OU=Domain Controllers,DC=activedirdev,DC=widgetco,DC=com" -samid