也许对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等,我尝试使用所有选项,凭据,服务器等。它始终只返回与我在同一域中的一台计算机上的信息。
答案 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是否实际支持引荐追逐。