我有一个有许多子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