вторник, 23 августа 2011 г.

Сбор сведений об Active Directory

### upd 10.02.2012

Иногда необходимо быстро собрать информацию об Active Directory.
Средств для сбора информации очень много.
Есть Active Directory Topology Diagrammer, но чтобы им пользоваться нужно установить Visio, плюс информация графическая, что тоже может не устроить.
Есть dcdiag, netdom, repadmin и т.д., но выдаваемая информация текстовая и не структурированная (это понятно, утилиты же для диагностики, а не для сбора информации, (или для конфигурирования)).
А хотелось бы, чтобы эта информация была хорошо структурирована, и чтобы ее можно было выгрузить или скопировать куда-либо в отчет, например, в отчет об обследовании.

Для этого написал небольшой скриптец, на powershell. Присутствует привязка к powershell, но сейчас все начинают переходить на 2008 r2 (или Windows 7), а там powershell предустановлен (даже 2.0). Если нет, то придется устанавливать.

Требования к скрипту:
- Powershell 1.0
- Net framework 2.0
- права администратора домена (можно обойтись обычным пользователем, но тогда не будет определенной информации)

Что делает скрипт? Вы ему указываете с какого леса (лесов) AD собрать информацию, он ее собирает и выгружает в xml-файл. В поставке идет трансформатор-xml - xsl-файл. С помощью этого файла вы можете получить информацию в удобном и читаемом (на мой взгляд) виде.

Гибкость в том, что если вы хотите поменять отображение, вам необходимо написать свой xsl-файл, при этом информацию заново собирать не нужно, скрипт переписывать не нужно.

Как запустить?
1) распаковываете архив (далее будем считать что вы распаковали в папку c:\temp)
2) запускаем powershell.exe
3) выполняем cd c:\temp\audit
4) выполняем .\ad_report.ps1 -forestlist "dns-имя_леса"
5) открываем каталог c:\temp\audit и открываем сформированный xml-файл с помощью веб-обозревателя (например, Internet Explorer)

Далее можно смотреть результат или скопировать куда-либо, например, в Excel/Word.
Если на этапе 4 появится сообщение о невозможности выполнить скрипт, убедитесь, что разрешен запуск неподписанных скриптов. Для разрешения запуска неподписанных скриптов необходимо выполнить команду Set-ExecutionPolicy RemoteSigned. После этого продолжить с шага 4.

Некоторые дополнительные возможности:
1) Запуск для сбора с нескольких лесов AD:
.\ad_report.ps1 -forestlist "dns-имя_леса1","dns-имя_леса2","..."
2) Можно указать другой выходной файл:
.\ad_report.ps1 -forestlist "dns-имя_леса1","dns-имя_леса2","..." -resultfile "имя_файла.xml"
3) Можно указать другой трансформатор, тогда его имя попадет в результирующий xml-файл (по-умолчанию, туда попадает файл ad_report.xsl):
.\ad_report.ps1 -forestlist "dns-имя_леса1","dns-имя_леса2","..." -resultfile "имя_файла.xml" -xslfile "трансформатор.xsl"
4) если вы укажете несколько лесов в параметре -forestlist, то сформируется один результирующий файл для всех указанных лесов, можно сформировать для каждого леса отдельный, вот так:
"dns-имя_леса1","dns-имя_леса2","..." | foreach { .\ad_report.ps1 -forestlist $_ -resultfile "имя_файла$($_).xml" -xslfile "трансформатор.xsl"

Файл для скачивания:
http://ifolder.ru/28635233
md5: 4a255a728f996f699291fa55662f6dea