1

Windows Active Directory поддерживает список назначений сайтов подсети (в «Active Directory - Сайты и службы» -> Сайты -> Подсети). Очевидно, что связи между подсетями и узлами используются рабочими станциями, чтобы выбрать подходящий DC для аутентификации. Но как эту информацию можно использовать программно для других целей? Например: учитывая IP, я хотел бы получить такие вещи, как имя сайта, как указано в свойствах в наиболее подходящей подсети. С помощью того, что было найдено, я мог бы перечислить все подсети и выполнить сопоставление подсетей со всеми ними самостоятельно, но поскольку эта задача так или иначе выполняется при каждой перезагрузке рабочей станции, я уверен, что для этого есть какой-то прямой метод ...

2 ответа2

1

nltest /server:servername /dsgetsite даст вам имя сайта, запросив AD.

Вы можете обернуть его в Powershell, чтобы использовать его программно проще:

function Get-SystemSite($SystemName)
{
    $site = nltest /server:$SystemName /dsgetsite 2>$null
    if($LASTEXITCODE -eq 0) { $site[0] }
}
-1

Я написал эту функцию, чтобы упростить использование nltest, как предложил Феб.

Function Get-AdSiteAndSubnetFromIP {
<#
.Synopsis
Get the matching AD Site and Subnet for a given IP Address
.DESCRIPTION
Get the matching AD Site and Subnet for a given IP Address.  The results will be returned as a Hash.
.EXAMPLE
Get-AdSiteAndSubnetFromIP -ip 172.28.68.53

ADSite        ADSubnet     
------        --------     
SiteA         10.1.0.0/16
.EXAMPLE

(Get-AdSiteAndSubnetFromIP -ip 172.28.68.53).ADSite

SiteA
#>
    param([string]$ip
        )
    $site = nltest /DSADDRESSTOSITE:$ip /dsgetsite 2>$null
    if ($LASTEXITCODE -eq 0) {
        $split = $site[3] -split "\s+"
        # validate result is for an IPv4 address before continuing
        if ($split[1] -match [regex]"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") {
            "" | select @{l="ADSite";e={$split[2]}}, @{l="ADSubnet";e={$split[3]}}
        }
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .