Скрипт для извлечения компьютерных объектов в определенных И отображения их соответствующих OU

У меня есть подразделение с множеством подчиненных подразделений, каждое с подразделением для компьютеров. Подразделение самого высокого уровня для запуска - это «Отделы» с множеством подчиненных подразделений.

Мне нужен сценарий для получения всех компьютеров и перечисления их в таблице с отображением их соответствующих подразделений.

Результат сценария может выглядеть примерно так. вот так:

Имя компьютера --- 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? Вроде просто, но я нигде не могу найти рабочий скрипт. Спасибо!

1
задан 3 December 2015 в 18:19
1 ответ

Ваш код - 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
3
ответ дан 3 December 2019 в 18:37

Теги

Похожие вопросы