Этот блог посвящен MS Exchange, Outlook и проблемам, связанным с электронной почтой

Как получить список пользователей в AD? PowerGUI — проще некуда

Предлагаю тех, кто еще задаст подобный вопрос, заставить отжиматься или делать что-нибудь в таком духе. Когда-то тема получения списка пользователей из AD была очень актуальна. Я даже писал какие-то скрипты на Visual Basic. Воды утекло много с тех пор. Сегодня мне этот вопрос задали опять.

        Нужно было получить список пользователей из Active Directory с телефонными номерами. Просьба вызвала улыбку, т.к. я понятия не имел, как это сделать, главное — не хотелось напрягаться и сделать бы это самым простым способом.  Такие просьбы – большая редкость.

В голову пришло несколько вариантов:

  • поискать решение в Гугле
  • попросить Васю
  • использовать PowerShell

я выбрал последнее. Дело не в том, что я не доверяю Васе или Гуглу, а просто мне хотелось сделать еще меньше телодвижений, чтобы получить этот список. Я вспомнил, что в PowerGUI есть средства для просмотра AD и экспорта в файл. 

Так и получилось,  скопастив строчки из уже готового скрипта в PowerGUI:

function func_getuser()

{

Get-QADUser -SizeLimit 0 -ErrorAction SilentlyContinue | Select-Object -property «Name»,«Office»,«PhoneNumber»

}

 func_getuser | where { $_.‘Office’ -ne $null } | where { $_.‘PhoneNumber’ -ne $null }

И нажав пару кнопок в PowerGUI я получил CSV файл на выходе и отправил пользователю, пусть делает, что хотел в MS Excel.

Ну разве это не прогресс? Больше автоматизации, особенно готовой — больше времени на другие дела. Велосипед изобретать совсем не нужно. И кстати, вот вам и случай практического применения Power Shell, вернее PowerGUI.

Похожие посты:

clock 9 Октябрь 2008, 15:56 comment Комментариев: 29



Комментариев: 29 к “Как получить список пользователей в AD? PowerGUI — проще некуда”

  1. Fanta:

    а как получить список всех ел. адресов ?



  2. Pavel Nagaev:

    в простом случае дописать «Email» после  «Name»,»Office»,»PhoneNumber». Но это не совсем правда, когда используется несколько почтовых адресов у одного пользователя.



  3. Pavel Nagaev:

    Ни за что не поверю, что это действительно проблема и с помощью Posh сделать нельзя :-)



  4. Pavel Nagaev:

    Нужно всего лишь разобрать поле: «proxyAddresses» :-)



  5. Fanta:

    :) вот в этом и вся соль
    я уже спрашивал об этом



  6. Kernelix Blogger:

    Делаю это с помощью простого скриптика VBScript или JScript, без всяких поверов..



  7. Sudden Death:

    Хм, я,канечна, дика извенаюсь, но таки Ldifde.exe впалне может сделать то, ап чем вы, молодой человек, просите. Ви знаите, тока прямота рук и не более того ;)



  8. Sadok:

    use perl

    тупейший запрос к LDAP же. не надо тут даже заморачиваться. «Power Shell — все украдено до нас!»



  9. Joker:

    А чем плохи элементарные dsquery / dsget? И никакого Powershell’a не надо. Я уже не говорю об упомянутом выше ldifde и его родном брате csvde…



  10. zorion:

    Что ж вы все такие умные, «дико извиняюсь», «тупейший запрос», «а чем плох». Вы не выёживайтесь, а возьмите и один раз напишите и каждого кто будет вас об этом спрашивать посылайте по ссылке. Весь technet пестрит ldifde, dsquery и csvde, а вот написать всем прописные истины лень.

    Особенно это касается Sadok, покажи всем, какой perl крутой и заткнёт за пояс любой PoSh.

    Извините, если кого обидел.



  11. zorion:

    Вот код на PoSh

    get-qaduser -IncludedProperties proxyAddresses | where-object {$_.proxyaddresses -ne $null} | foreach-object {$_.proxyaddresses -replace «smtp:» -replace «SMTP:»}



  12. Все e-mail из домена « Zorion’s Weblog:

    [...] Exchange, PowerShell — Метки:proxyaddresses — zorion @ 9:30 дп Навеяно статьёй Павла [...]



  13. Sudden Death:

    to zorion:
    Простите, в чем именно идет выеживание ? И что вам кто обязан написать ? Может быть элементарная лень не позволяет зайти на сайт МС и набрать в строке поиска как запрашивать инфу из AD ? Как я понимаю, тут не институт благородных девиц. Уж чем чем, а умением пользоваться поиском информации должны владеть.
    А то куда не ткни, все MCSA, MCSE, но чуть что — ой, ви такой умный, таки череп не жмет ? :)
    Да даже если обидел, обижайтесь на самих себя ;)



  14. nome:

    вощимта, и на VBS это несложно сделать, а вот, например, OU получить, уже проблемы везде возникают.



  15. zorion:

    Один только Павел работает в институте благородных девиц и может подсказать, а остальные гуру только на словах, в каментах погадить на простейший вопрос человека.



  16. Pavel Nagaev:

    Я наверное неправильно выразился или не донес до чЕтателей, что целью было не выбрать самый лучший или удобный способ, а также не показать все известные способы. Цель — сделать как можно быстрее и прилагая, как можно меньше усилий. В моем случае это было — PowerGUI, т.к. он установлен на рабочей станции и нужно было только его запустить. Во всех остальных случаях движений было бы больше.

    Ну и хорошо, что так получилось, давайте резюмируем:

    • Ldifde.exe and Csvde.exe
    • Скрипты на VB и других языках
    • dsquery / dsget
    • PoSh
    • Специализированные утилиты

    Ничего не забыл? :-)
    Но знаете, все же мой способ не самый простой. Самый простой — это сказать подчиненному:»Мне нужен список пользователей с номерами телефонов и e-mail адресов. Время пошло.» :-)



  17. Pavel Nagaev:

    to nome: Ключевая фраза»Цель — сделать как можно быстрее и прилагая, как можно меньше усилий.»

    Друзья, давайте не будем ссорится. Меня это никоим образом не задевает.

    Мне вот жена сейчас в мессенджер написала:
    Elena says (9:27):
    ладно, я пошла,  у меня еще там коллайдер запущен (стиралко)

    Стиральная машина = коллайдер. Бу-га-га :-)



  18. Kom:

    Хрень полная …
    Выгрузку из АД можно сделать и из консоли …
    ЛЮБЫХ видимых полей (поле телефона и Данные пользователя оными и являются)



  19. Pavel Nagaev:

    А с чего Вы взяли, что нужен был только один телефон? Выгрузка из консоли довольно убога и позволяет делать только ну очень базовый экспорт.



  20. Sadok:

    А Вы знаете, что существует масса консольных средств  портированных из правильных ОС, чтоб с этим не заморачиваться? Получай вывод и парси его как хочешь: хоть perl’om, хоть grep’ом c awk.  Если на выходе есть текст — проблем нет.



  21. Pavel Nagaev:

    1. Приведите пожалуйста пример, чтобы я точно понимал о чем Вы говорите.
    2. Понятно, что инструментов масса и выбор инструмента полностью зависит от вашего владения им. Я например не знаю перла и парсить файл с выводом мне не удобно, хотя и можно. Я конечно же выберу повершелл, т.к. он мне ближе и средств для работы в нем тоже полно.
    А все консольные программы никогда в жизни не дадут полную кастомизацию под нужды  конкретного пользователя.



  22. Sadok:

    Пример я уже привел: awk, портиорванный под Вин32

    Повершелл… Он отдает много инфы, не спорю. Впрочем, я ковырял его в контексте администрирования Эксч2007. Но обрабатывать ее средствами самого ПоШ нереально, имхо. Т.е. для менеджмента из командной строки  — отличный инструмент. Получение инфы же довольно неоднозначною, в смысле ее полезности.



  23. Pavel Nagaev:

    Как Вы думаете, какое количество народа, работающего с виндовс технологиями знают, что такое awk и уж тем более умеют им пользоваться?

    «ПоШ нереально, имхо» вполне реально и удобно, вопрос опыта работы с инструментом. Вам удобно с awk, мне с пошем. 

    Плюс я не очень люблю сторонние утилиты, стараюсь использовать Микрософтовские, если у них нет или совсем не удобно, тогда уж сторонние. Но пош хорош.



  24. Sadok:

    Достаточное  кол-во людей,  имхо.

    Впрочем, начинается холивар…



  25. Pavel Nagaev:

    За все время работы с ИТ технологиями я второй раз слышу от человека о том, чтобы использовать портированные инструменты под винду. Первый был коллега, который всю жизнь на перле отчеты делал и теперь иногда его использует для отчетов под винду.

    Все. Про awk знают те, кто возился с линухом и не просто ставил, а именно возился. Среди моих знакомых ИТшников таких очень мало.



  26. kkv:

    Каждое средство хорошо в конкретных случаях. где-то и на прологе будет проще написать :)
    а так если вы знаете что такое awk grep cat то это только вам «+». Сам часто использую perl именно для парсинга :)



  27. Pavel Nagaev:

    +1



  28. Sadok:

    {кряхтя} я помню еще Алгол :)



  29. Властелин Колец:

    Ничего не понял, но для этого наверное эта статья и этот флуд тут опубликованы.
    Мне вот "тупо" надо выгрузить Display Name и Emalы, но эффект от этой статьи для меня полный 0.
    Спасибо за старания.