以特定方式检索计算机对象的脚本,并显示其各自的OU

我有一个有许多子OU的OU,每个OU都有一个计算机的OU。 要开始的最高级别的OU是具有许多子OU的“部门”。

我需要一个脚本来检索所有的计算机,并将它们列在一个表中,并显示它们各自的OU。

脚本的结果可能如下所示:

计算机名称— OU

Computer01 —- Fabrikam.com/Departments/Finance/Computers

….或者它甚至可能看起来像是相应的AD'Object':

Fabrikam.com/Departments/Finance/Computers/Computer01

虽然我更喜欢第一个。

这是我试过的脚本,但运行时会抛出大量的错误:

On Error Resume Next Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = _ "SELECT ADsPath FROM 'LDAP://OU=Departments,dc=fabrikam,dc=com' WHERE " & _ "objectCategory='organizationalUnit'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF Set objOU = GetObject(objRecordSet.Fields("ADsPath").Value) Wscript.Echo objOU.distinguishedName objOU.Filter = Array("Computer") For Each objItem in objOU Wscript.Echo " " & objItem.CN Next Wscript.Echo Wscript.Echo objRecordSet.MoveNext Loop 

我如何检索一个OU中的所有计算机,并将它们与各自的OU进行列表? 看起来很简单,但我找不到任何地方的工作脚本。 谢谢!

你的代码是VBScript,但是在PowerShell中这样做更容易,而且你在PowerShell论坛上发布过。

这将提供你在找什么。 有时我更喜欢使用DistinguishedName上的canonicalname。

这将需要安装RSAT,或从域控制器运行。

 import-module ActiveDirectory get-adcomputer -Filter 'Name -like "*"' -SearchBase "OU=starthere,DC=yourdom,DC=com" | select DistinguishedName get-adcomputer -Filter 'Name -like "*"' -SearchBase "OU=starthere,DC=yourdom,DC=com" -prop canonicalname | select canonicalname