Правка № 3: Обновление справочной документации.
Редактирование # 2: Редактирование еще раз, потому что я написал что-то в PS, чтобы сделать именно то, что вы пытаетесь сделать. Это внизу.
Я собираюсь пойти дальше и утверждать, что в настоящее время не существует способа сделать это с помощью Powershell Friendly (tm) . Но, конечно, вы все равно можете использовать Powershell, чтобы сделать запрос LDAP необходимым, чтобы увидеть эти параметры, если вы действительно этого хотите. Проверьте optionsатрибут NTDS Settingsобъекта каждого сервера, который связан с сайтом AD:

Это точный атрибут, который является битовой маской, над которой работает repadmin.exe. Repadmin.exe содержит дружественный переводчик битовых масок в своем коде. Как и оснастка ADSIEdit MMC. Однако вам нужно будет воссоздать этот переводчик битовых масок в Powershell.
Например, Repadmin /options <DC> [{+|-} IS_GC]это допустимая команда, и теперь мы точно знаем, какой бит над ней работает.
Вот сравнительно дрянная документация MSDN об optionsатрибуте.
Лучшая документация MSDN по optionsатрибуту.
Параметры атрибута
Битовое поле, где значение битов варьируется от objectClass до objectClass. Может встречаться в объектах Inter-Site-Transport, NTDS-Connection, NTDS-DSA, NTDS-Site-Settings и Site-Link.
А вот пример поиска вариантов с использованием операторов правил соответствия старой школы:
(&(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))
Этот фильтр использует оператор правила соответствия LDAP_MATCHING_RULE_BIT_AND (1.2.840.113556.1.4.803), чтобы найти объекты nTDSDSA, биты младшего разряда которых установлены в битовой маске атрибута параметров. Бит младшего разряда, который соответствует константе NTDSDSA_OPT_IS_GC, определенной в Ntdsapi.h, идентифицирует объект nTDSDSA сервера Глобального каталога. Для получения дополнительной информации о правилах соответствия см. Синтаксис поискового фильтра.
О, мальчик, это звучит весело!
Некоторые другие значения для битовой маски:

Итак, с этим у вас должно быть достаточно информации, чтобы создать свой собственный Get-ADSiteOptionsкомандлет ... если вы хотите, чтобы я написал для вас один, я сделаю это за очень скромную плату ...;)
Изменить: Вот ссылка Microsoft, Repadmin for Experts , которая детализирует разницу между optionsи siteoptionsподкоманды repadmin:
Используя подкоманду siteoptions, мы могли изменить атрибут параметров, хранящийся в объекте параметров сайта NTDS.
Что касается этого растрового изображения? Это даже задокументировано? Точно сказать не могу. Если вы можете сказать мне, что FORCE_KCC_WHISTLER_BEHAVIORзначит в интервью, я найму вас на месте. Вы такой понты, MDMarra. ;)
Итак, просто подытожим, что optionsатрибут CN=NTDS Settingsобъекта для каждого контроллера домена соответствует специфическим для DC параметрам, т. repadmin <DC> /optionsЕ. optionsАтрибут CN=NTDS Site Settingsобъекта в каждом сайте соответствует repadmin /siteoptions.
Итак, чтобы окончательно ответить на ваш вопрос. Получение конкретно параметров сайта, а не параметров DC:
ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext))
{
Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options
}
Если параметры сайта не заданы, Powershell не вернет их. Вероятно, вы могли бы немного упростить приведенный выше код, но он использует язык, с которого вы начали. После слишком долгих поисков я наконец нашел документацию по настройкам сайта bitmask :

Так IS_INTER_SITE_AUTO_TOPOLOGY_DISABLEDчто для этого вы привели в качестве примера, вы будете искать значение 0x00000010для optionsатрибута.

И от запуска фрагмента Powershell:

Изменить № 2: Я написал вам кое-что сегодня:
#Require -Version 3
#Require -Module ActiveDirectory
Function Get-ADSiteOptions
{
<#
.SYNOPSIS
This Cmdlet gets Active Directory Site Options.
.DESCRIPTION
This Cmdlet gets Active Directory Site Options.
We can fill out the rest of this comment-based help later.
.LINK
http://myotherpcisacloud.com
.NOTES
Written by Ryan Ries, October 2013. ryanries09@gmail.com.
#>
[CmdletBinding()]
Param()
BEGIN
{
Set-StrictMode -Version Latest
# This enum comes from NtDsAPI.h in the Windows SDK.
# Also thanks to Jason Scott for pointing it out to me. http://serverfault.com/users/23067/jscott
Add-Type -TypeDefinition @"
[System.Flags]
public enum nTDSSiteSettingsFlags {
NTDSSETTINGS_OPT_IS_AUTO_TOPOLOGY_DISABLED = 0x00000001,
NTDSSETTINGS_OPT_IS_TOPL_CLEANUP_DISABLED = 0x00000002,
NTDSSETTINGS_OPT_IS_TOPL_MIN_HOPS_DISABLED = 0x00000004,
NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED = 0x00000008,
NTDSSETTINGS_OPT_IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED = 0x00000010,
NTDSSETTINGS_OPT_IS_GROUP_CACHING_ENABLED = 0x00000020,
NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR = 0x00000040,
NTDSSETTINGS_OPT_FORCE_KCC_W2K_ELECTION = 0x00000080,
NTDSSETTINGS_OPT_IS_RAND_BH_SELECTION_DISABLED = 0x00000100,
NTDSSETTINGS_OPT_IS_SCHEDULE_HASHING_ENABLED = 0x00000200,
NTDSSETTINGS_OPT_IS_REDUNDANT_SERVER_TOPOLOGY_ENABLED = 0x00000400,
NTDSSETTINGS_OPT_W2K3_IGNORE_SCHEDULES = 0x00000800,
NTDSSETTINGS_OPT_W2K3_BRIDGES_REQUIRED = 0x00001000 }
"@
ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext))
{
$SiteSettings = Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options
If(!$SiteSettings.PSObject.Properties.Match('Options').Count -OR $SiteSettings.Options -EQ 0)
{
# I went with '(none)' here to give it a more classic repadmin.exe feel.
# You could also go with $Null, or omit the property altogether for a more modern, Powershell feel.
[PSCustomObject]@{SiteName=$Site.Name; DistinguishedName=$Site.DistinguishedName; SiteOptions='(none)'}
}
Else
{
[PSCustomObject]@{SiteName=$Site.Name; DistinguishedName=$Site.DistinguishedName; SiteOptions=[Enum]::Parse('nTDSSiteSettingsFlags', $SiteSettings.Options)}
}
}
}
}
И вот оно в действии:
