none
Получить список имен компьютеров по полю Country\Region из свойств пользователя. RRS feed

  • Вопрос

  • Всем добрый день\вечер\ночи\утра.

    Огромный домен.
    Есть один OU - пользователи (5000+).
    Другой OU - компьютеры. (5000+).

    В свойствах компьютеров прописаны поля ManagedBy, т.е. пользователь данного компа. (Могут быть одинаковые пользователи для нескольких компов)
    В свойствах пользователей прописаны поля Country\Region (напр: Russia\Moscow, Russia\Ekaterinburg, Holland\Amsterdam, USA\Houston....)

    Задача:
    Написать скрипт vbs который выведет в файл, или просто в WScript.Echo, список имен компьютеров с соответствующими пользователями (по ManagedBy) из страны Russia. (Вне зависимости в каком городе).

    Гуру скриптинга помогите реализовать данную задачу. 


    9 июля 2009 г. 14:51

Ответы

  • Зачем вам именно VBS? Это будет и дольше, и сложнее, и уж точно менее красиво :)
    Вот вариант на PowerShell + AD Cmdlets, на написание ушло минут 5, меньше чем на воссоздание подобной структуры для тестирования :)

    #Получаем объекты компьютеров домена
    Get-QAdComputer |
    #Отбираем лишь те у которых задано свойство ManagedBy
    Where {$_.managedby} |
    #Получаем объект пользователя по ManagedBy (указав в запросе что необходимо получить кроме общих свойств еще и co)
    #И отбираем лишь те компьютеры у которых у пользователя из ManagedBy в co указана "Russia".
    Where {(get-qaduser $_.managedby -include co -ea0).co -eq "Russia"} |
    #Форматируем в виде таблицы для вывода на экран, с автоматической подгонкой столбцов.
    #Можно было вместо этого использовать например Export-Csv
    Format-Table name, managedby -AutoSize

    PS C:\Users\administrator.TD> get-qadcomputer|?{$_.managedby}|?{(get-qaduser $_.managedby -include co -ea 0).co -eq "Russia"} | ft name, managedby Name ManagedBy ---- --------- CLIENT5 CN=user1,OU=Test,DC=td,DC=local CLIENT6 CN=user3,OU=Test,DC=td,DC=local

     


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    10 июля 2009 г. 16:59
    Модератор
  • А в текущей версии PS не появилось своих командлетов для работы с AD?

    http://technet.microsoft.com/en-us/library/dd378937(WS.10).aspx

     

    You can install the Active Directory module by using any of the following methods:
    
    By default, on a Windows Server 2008 R2 server when you install the AD DS or AD LDS server roles 
    
    By default, when you make a Windows Server 2008 R2 server a domain controller by running Dcpromo.exe
    
    As part of the Remote Server Administration Tools (RSAT) feature on a Windows Server 2008 R2 server
    
    As part of the RSAT feature on a Windows 7 computer
    


    • Предложено в качестве ответа mtimley 23 августа 2011 г. 9:36
    • Помечено в качестве ответа KazunEditor 23 августа 2011 г. 11:14
    23 августа 2011 г. 9:18
    Отвечающий

Все ответы

  • Зачем вам именно VBS? Это будет и дольше, и сложнее, и уж точно менее красиво :)
    Вот вариант на PowerShell + AD Cmdlets, на написание ушло минут 5, меньше чем на воссоздание подобной структуры для тестирования :)

    #Получаем объекты компьютеров домена
    Get-QAdComputer |
    #Отбираем лишь те у которых задано свойство ManagedBy
    Where {$_.managedby} |
    #Получаем объект пользователя по ManagedBy (указав в запросе что необходимо получить кроме общих свойств еще и co)
    #И отбираем лишь те компьютеры у которых у пользователя из ManagedBy в co указана "Russia".
    Where {(get-qaduser $_.managedby -include co -ea0).co -eq "Russia"} |
    #Форматируем в виде таблицы для вывода на экран, с автоматической подгонкой столбцов.
    #Можно было вместо этого использовать например Export-Csv
    Format-Table name, managedby -AutoSize

    PS C:\Users\administrator.TD> get-qadcomputer|?{$_.managedby}|?{(get-qaduser $_.managedby -include co -ea 0).co -eq "Russia"} | ft name, managedby Name ManagedBy ---- --------- CLIENT5 CN=user1,OU=Test,DC=td,DC=local CLIENT6 CN=user3,OU=Test,DC=td,DC=local

     


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    10 июля 2009 г. 16:59
    Модератор
  • Уважаемый Vasily Gusev

    Спасибо огромное за вашу помощь. Не думал, если честно, что на powershell`e будет так просто. ;)
    14 июля 2009 г. 11:08
  • Уважаемый Vasily Gusev

    Спасибо огромное за вашу помощь. Не думал, если честно, что на powershell`e будет так просто. ;)

    Добро пожаловать ;)
    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    14 июля 2009 г. 13:01
    Модератор
  • А в текущей версии PS не появилось своих командлетов для работы с AD?
    23 августа 2011 г. 9:12
  • А в текущей версии PS не появилось своих командлетов для работы с AD?

    http://technet.microsoft.com/en-us/library/dd378937(WS.10).aspx

     

    You can install the Active Directory module by using any of the following methods:
    
    By default, on a Windows Server 2008 R2 server when you install the AD DS or AD LDS server roles 
    
    By default, when you make a Windows Server 2008 R2 server a domain controller by running Dcpromo.exe
    
    As part of the Remote Server Administration Tools (RSAT) feature on a Windows Server 2008 R2 server
    
    As part of the RSAT feature on a Windows 7 computer
    


    • Предложено в качестве ответа mtimley 23 августа 2011 г. 9:36
    • Помечено в качестве ответа KazunEditor 23 августа 2011 г. 11:14
    23 августа 2011 г. 9:18
    Отвечающий