У меня есть подразделение с множеством подчиненных подразделений, каждое с подразделением для компьютеров. Подразделение самого высокого уровня для запуска - это «Отделы» с множеством подчиненных подразделений.
Мне нужен сценарий для получения всех компьютеров и перечисления их в таблице с отображением их соответствующих подразделений.
Результат сценария может выглядеть примерно так. вот так:
Имя компьютера --- OU
Computer01 ---- Fabrikam.com/Departments/Finance/Computers
.... или даже может показаться, что оно соответствует AD 'Объект':
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.
Для этого потребуется установка 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