Active Directory引用追逐问题

时间:2014-02-24 16:00:15

标签: powershell active-directory powershell-v2.0 dsquery

也许对Active Directory有更多经验的人可以帮助我。 我需要从不同域中的计算机获取操作系统,名称,FQDN等信息。 我会解释我的意思。 我有根域:example.com,有2个子域:xxx.example.com和yyy.xxx.example.com

每个域包含1台计算机。它们都在一个组中,例如groupfoo,它们也在不同的OU

我可以获取有关组中成员的信息,我尝试使用PowerShell和dsquery。它们都返回组中的正确计算机列表。但我只能从运行PowerShell脚本和dsquery的同一域中的计算机获取信息。

要清楚我还有一台计算机不在groupfoo中,而且这台计算机用于管理Active Directory。

据我所知,在Active Directory中我们有“推荐追逐”这样的东西。 我读了很多,因为我知道Power Shell没有诸如“启用引用追逐”之类的选项。对于dsquery,我发现选项-r用于递归请求。

我已经尝试过:

PS> dsquery group -name goupfoo | dsget group -members
"CN=member01,OU=Domain Controllers,DC=xxx,DC=example,DC=com"
"CN=member02,OU=XXX,OU=Domain Controllers,DC=yyy,DC=xxx,DC=example,DC=com"

我的电脑在DC = yyy,DC = xxx,DC =示例,DC = com我可以从CN = member02获取信息,OU = XXX,OU =域控制器,DC = yyy,DC = xxx,DC =示例,DC = COM

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

为member01运行相同的命令没有产生任何结果:

PS > dsquery * -filter "(&(objectClass=Computer)(objectCategory=Computer)(sAMAccountName=member01$))" -attr sAMAccountName operatingSystem
PS >

我尝试了不同的dsquery变体,我尝试使用-r键进行递归,但它不起作用。

也许重要的是,在“DC = yyy,DC = xxx,DC = example,DC = com”的设置中,我看到了什么“DC = xxx,DC = example,DC = com”它是“我信任的父母” DC = yyy,DC = xxx,DC = example,DC = com“也许我可以从父域获取相同信息?

我可以使用Power Shell Get-ADGroup,Get-ADMember等,我尝试使用所有选项,凭据,服务器等。它始终只返回与我在同一域中的一台计算机上的信息。

1 个答案:

答案 0 :(得分:0)

尝试使用DirectorySearcher对象:

$filter     = "(&(objectCategory=Computer)(sAMAccountName=$computername))"
$properties = 'distinguishedName', 'sAMAccountName', ...

$search = New-Object DirectoryServices.DirectorySearcher
$search.SearchRoot  = New-Object DirectoryServices.DirectoryEntry
$search.Filter      = $filter
$search.SearchScope = 'Subtree'
$search.ReferralChasing = [DirectoryServices.ReferralChasingOption]::All
$properties | % { $search.PropertiesToLoad.Add($_) } | Out-Null

$search.FindAll()

我不知道ActiveDirectory模块cmdlet是否实际支持引荐追逐。