Главная > Программирование, Работа > Функция определения какие роли хранятся на каких контроллерах домена

Функция определения какие роли хранятся на каких контроллерах домена

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

#########################################################################################
#   Created:        Zakharchenko Andrey Ruslanovich
#   Date:           2009.09.07
#   Description:    Функция получения ролей хранящихся на контроллерах домена
#########################################################################################

Function Get-DomainRoles {
    param($domain)
#--- если домен не задан получает текущий домен
    if (!$domain) {
        $domain = (Get-WmiObject -ComputerName '.' -Query 'Select domain From Win32_ComputerSystem').Domain
    }
#--- подключаемся к указанному домену и осуществляем получение информации
    $context = new-object System.DirectoryServices.ActiveDirectory.DirectoryContext(”Domain”,$domain)
    $dclist = [System.DirectoryServices.ActiveDirectory.DomainController]::findall($context)
#--- разбираем ролученные данные
    Foreach ( $chek in $dclist ) {
#--- отфильтровывает КД на которых нету ролей
        if ($chek.Roles -ne "" ) {
            $i = 0
#--- ну и самое вкусное
            while ($i -ne $chek.Roles.Count) {
                switch ($chek.Roles[$i]) {
                    'SchemaRole' { $role = 'Хозяин схемы' }
                    'NamingRole' { $role = 'Хозяин именования домена' }
                    'PdcRole' { $role = 'Эмуляция главного контроллера домена (PDC)' }
                    'RidRole' { $role = 'Хозяин относительных идентификаторов (RID)' }
                    'InfrastructureRole' { $role = 'Хранитель инфраструктуры' }
                }
                $tmp = "" | Select @{n='Roles';e={$($role)}},@{n='DC';e={$($chek.name.ToLower())}}
                $tmp
                $i++
            }
        }
    }
}

Ну и собственно пример работы:

[PS] <7> C:\Bin>Get-DomainRoles

Roles                                                       DC
-----                                                       --
Эмуляция главного контроллера домена (PDC)                  dc-01.isea.ru
Хозяин относительных идентификаторов (RID)                  dc-01.isea.ru
Хозяин схемы                                                dc-02.isea.ru
Хозяин именования домена                                    dc-02.isea.ru
Хранитель инфраструктуры                                    dc-02.isea.ru


[PS] <8> C:\Bin>
[PS] <8> C:\Bin>Get-DomainRoles -domain "student.isea.ru"

Roles                                                       DC
-----                                                       --
Эмуляция главного контроллера домена (PDC)                  dc-03.student.isea.ru
Хозяин относительных идентификаторов (RID)                  dc-03.student.isea.ru
Хранитель инфраструктуры                                    dc-03.student.isea.ru


[PS] <9> C:\Bin>
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.