Инвентаризация контроллеров домена с помощью Powershell

Как вы уже поняли, моим хобби является написание скриптов на Powershell для Active Directory 🙂

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

Из полезного – еще можно выдернуть наличие на контроллере домена роли глобального каталога, FSMO-ролей, RODC или нет. Плюс убрать саму привязку скрипта к модулю AD for Powershell. Но атрибута “глобальный каталог” или RODC в выводе Get-ADDomainController я не увидел, а FSMO-роли возвращаются в виде массива значений, поэтому в экспорт CSV не попадают.

Get-ADDomainController -Filter * | select hostname, site, operatingsystem, OperatingSystemServicePack, @{name="vendor";expression={(gwmi Win32_ComputerSystem -ComputerName $_.hostname).Manufacturer}}, @{name="model";expression={(gwmi Win32_ComputerSystem -ComputerName $_.hostname).model}}, @{name="CPU, count";expression={(gwmi Win32_ComputerSystem -ComputerName $_.hostname).NumberOfLogicalProcessors}}, @{name="RAM/GB";expression={[math]::round((gwmi Win32_ComputerSystem -ComputerName $_.hostname).Totalphysicalmemory/1GB)}} | sort hostname | Export-
Csv -NoTypeInformation C:\scripts\dclist.csv

Полученный CSV-файл открывается в Excel и обрабатывается с помощью операции “Текст по столбцам”.

[table id=1 /]

6 thoughts on “Инвентаризация контроллеров домена с помощью Powershell”

  1. Для RODC у Get-ADDomainController есть IsReadOnly. Можно его в фильтре использовать.
    Глобальный каталог можно из Get-ADForest выдернуть.
    FSMO-роли – в чем сложность обойти массив foreach?

  2. На самом деле, для RODC есть свойство IsReadOnly, для глобального каталога – IsGlobalCatalog. Смотрел невнимательно.
    Добавляем эти свойства в Select в виде “select hostname, IsReadOnly, IsGlobalCatalog, …”

    Сложностей в обходе массива foreach не было – был вопрос в затрачиваемом времени. Мне хватило вывода утилиты netdom query fsmo.

  3. Андрюха, я тебе не завидую :)) тебе скриптами приходится контроллеры домена инвентаризировать :))

  4. а как бы туда еще поддомены добавить? 🙂 желательно с полным именем))))

  5. Макс, как-то так
    Вместо “Get-ADDomainController -Filter *” используйте
    (Get-ADForest).Domains | % { Get-ADDomainController -Discover -DomainName $_ } | % { Get-ADDomainController -server $_.Name -filter *}

Leave a Reply

Your email address will not be published. Required fields are marked *