Функция определения какие роли хранятся на каких контроллерах домена
8 Сентябрь 2009
В продолжение прошлого поста публикую функцию отображения где какие роли находятся. Я понимаю что подобных скриптов уже полно. НО как говорится хотелось сделать самому, да и разобраться с этим делом. А не использовать безвольно уже готовое.
#########################################################################################
# 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++
}
}
}
}
# 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>
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>

.gif)
