Site de consulta para determinado ip de sites e serviços do AD

1

O Windows Active Directory mantém uma lista de atribuições de sub-redes a sites (em "Active Directory - Sites e Serviços" - > Sites - > Sub-redes). A associação de sub-site a site é usada, obviamente, por estações de trabalho para selecionar um DC adequado para autenticar com. Mas como essa informação pode ser usada programaticamente para outros propósitos? Por exemplo: Dado um IP, eu gostaria de obter coisas como o nome do site como encontrado nas propriedades na melhor sub-rede correspondente. Com o que encontrei até agora, eu poderia listar todas as sub-redes e fazer a sub-rede combinando com todas elas sozinho - mas como esta tarefa é de uma forma ou outra executada com cada reinicialização da estação de trabalho, tenho certeza que existe algum método direto para isso ...

    
por Hagen von Eitzen 24.05.2014 / 21:15

2 respostas

1

nltest /server:servername /dsgetsite fornecerá o nome do site consultando o AD.

Você pode envolvê-lo no Powershell para usá-lo programaticamente com mais facilidade:

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

Eu escrevi essa função para simplificar o uso do nltest como o phoebus sugeriu.

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]}}
        }
    }
}
    
por 29.12.2015 / 22:21