Sunting # 3: Memperbarui dokumentasi referensi.
Sunting # 2: Mengedit sekali lagi karena saya menulis sesuatu di PS untuk melakukan persis apa yang Anda coba lakukan. Itu di bawah.
Saya akan melanjutkan dan menegaskan bahwa tidak ada cara Powershell Friendly (tm) untuk melakukannya saat ini. Tapi tentu saja Anda masih bisa menggunakan Powershell untuk membuat kueri LDAP diperlukan untuk melihat opsi ini jika Anda benar-benar menginginkannya. Lihat optionsatribut NTDS Settingsobjek dari setiap server yang terkait dengan situs AD:

Itu adalah atribut yang tepat, yang merupakan bitmask, yang berfungsi pada repadmin.exe. Repadmin.exe berisi penerjemah bitmask yang ramah dalam kodenya. Seperti halnya snap-in MMC ADSIEdit. Namun, Anda harus membuat ulang penerjemah bitmask itu di Powershell.
Sebagai contoh, Repadmin /options <DC> [{+|-} IS_GC]adalah perintah yang valid, dan sekarang kita tahu persis bit mana yang beroperasi.
Berikut adalah dokumentasi MSDN yang relatif jelek pada optionsatribut.
Dokumentasi MSDN yang lebih baik pada optionsatribut.
Opsi Atribut
Bitfield, di mana arti bit bervariasi dari objectClass ke objectClass. Dapat terjadi pada Inter-Site-Transport, NTDS-Connection, NTDS-DSA, NTDS-Site-Settings, dan objek-situs-Link Site.
Dan di sini adalah contoh mencari opsi menggunakan operator aturan pencocokan old-school:
(&(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))
Filter ini menggunakan LDAP_MATCHING_RULE_BIT_AND operator aturan pencocokan (1.2.840.113556.1.4.803) untuk menemukan objek nTDSDSA yang memiliki bit orde rendah yang diatur dalam bitmask atribut options. Bit urutan rendah, yang sesuai dengan konstanta NTDSDSA_OPT_IS_GC didefinisikan dalam Ntdsapi.h, mengidentifikasi objek nTDSDSA dari server Katalog Global. Untuk informasi lebih lanjut tentang aturan yang cocok, lihat Sintaksis Filter Pencarian.
Oh boy apakah itu terdengar menyenangkan!
Beberapa nilai lain untuk bitmask:

Jadi dengan itu Anda harus memiliki informasi yang cukup untuk menggulung Get-ADSiteOptionsCmdlet Anda sendiri ... jika Anda ingin saya menulis satu untuk Anda, saya akan, dengan biaya yang sangat sederhana ...;)
Sunting: Berikut adalah tautan Microsoft, Repadmin untuk Para Ahli , yang merinci perbedaan antara optionsdan siteoptionssubperintah dari repadmin:
Dengan menggunakan sub-perintah opsi situs, kita bisa mengubah atribut opsi yang disimpan pada objek pengaturan situs NTDS.
Adapun bitmap itu? Apakah bahkan didokumentasikan? Tidak yakin. Jika Anda dapat memberitahu saya apa FORCE_KCC_WHISTLER_BEHAVIORartinya dalam sebuah wawancara, saya akan mempekerjakan Anda di tempat. Anda pamer seperti itu, MDMarra. ;)
Jadi hanya untuk meringkas, optionsatribut pada CN=NTDS Settingsobjek untuk setiap pengontrol domain sesuai dengan opsi spesifik DC, yaitu repadmin <DC> /options, sedangkan optionsatribut pada CN=NTDS Site Settingsobjek di bawah setiap situs sesuai dengan repadmin /siteoptions.
Jadi, untuk akhirnya menjawab pertanyaan Anda. Mendapatkan opsi situs secara khusus, bukan opsi DC:
ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext))
{
Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options
}
Jika tidak ada opsi situs yang ditetapkan, Powershell tidak akan mengembalikannya. Anda mungkin bisa menyederhanakan kode di atas sedikit tetapi menggunakan bahasa yang Anda mulai. Setelah mencari terlalu banyak, akhirnya saya menemukan dokumentasi di situs bitmask :

Jadi untuk IS_INTER_SITE_AUTO_TOPOLOGY_DISABLEDyang Anda berikan sebagai contoh, Anda akan mencari nilai 0x00000010untuk optionsatribut.

Dan dari menjalankan cuplikan Powershell:

Sunting # 2: Saya menulis sesuatu kepada Anda hari ini:
#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)}
}
}
}
}
Dan ini dia beraksi:
