Всё о о Microsoft Exchange Server и электронной почте.

Как получить список пользователей в 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.

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

  • http://cityua.net Fanta

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

  • http://www.exchangerus.ru Pavel Nagaev

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

  • http://www.exchangerus.ru Pavel Nagaev

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

  • http://www.exchangerus.ru Pavel Nagaev

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

  • http://cityua.net Fanta

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

  • Kernelix Blogger

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

  • Sudden Death

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

  • Sadok

    use perl

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

  • Joker

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

  • http://zorion.wordpress.com zorion

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

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

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

  • http://zorion.wordpress.com zorion

    Вот код на PoSh

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

  • http://zorion.wordpress.com/2008/10/10/all-e-mail/ Все e-mail из домена « Zorion’s Weblog

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

  • Sudden Death

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

  • nome

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

  • http://zorion.wordpress.com zorion

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

  • http://www.exchangerus.ru Pavel Nagaev

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

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

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

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

  • http://www.exchangerus.ru Pavel Nagaev

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

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

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

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

  • Kom

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

  • http://www.exchangerus.ru Pavel Nagaev

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

  • Sadok

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

  • http://www.exchangerus.ru Pavel Nagaev

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

  • Sadok

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

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

  • http://www.exchangerus.ru Pavel Nagaev

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

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

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

  • Sadok

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

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

  • http://www.exchangerus.ru Pavel Nagaev

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

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

  • kkv

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

  • http://www.exchangerus.ru Pavel Nagaev

    +1

  • Sadok

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

  • Властелин Колец

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

  • Анонимус

    Поддерживаю предыдущего оратора.
    Гуру IT-флуда в очередной раз помахали причиндалами и поговорили, кто чем там шерсть расчесывает.
    Пользы от темы — ноль, зато в гугле в выдаче на первой странице.

  • http://www.exchangerus.ru Pavel Nagaev

    В 2008 году написан пост, тогда актуально было. Сейчас уже нет, т.к. есть AD командлеты.
    Что сделать то хотели?

  • Максим

    Не работает, говорит: Имя «Get-QADUser» не распознано как имя командлета.

  • http://www.exchangerus.ru Pavel Nagaev

    Нужно установить коммандлеты для работы с AD из Quest.
    http://www.quest.com/powershell/activeroles-server.aspx