Para um computador que é membro de um domínio, a variável de ambiente LOGONSERVER contém o nome do controlador de domínio que autenticou o usuário atual. Obviamente, não serão todos os DCs em um ambiente multi-DC, mas se tudo o que você deseja é uma maneira rápida de encontrar o nome de um controlador de domínio, a partir de um shell de comando:
set l <enter>
Retornará todas as variáveis de ambiente que começam com "L", incluindo o nome de um controlador de domínio.
DNS e DHCP são a melhor maneira de verificar, pois pode haver máquinas Unix/Linux na rede gerenciadas pelo controlador de domínio AD ou atuando como controlador de domínio.
Além disso, considerar o diretório ativo nada mais é do que a versão da Microsoft de Kerberos, LDAP, dhcp e dns. Seria melhor entender e depurar coisas em camadas inferiores do que na camada 7+. Isso ocorre porque o sistema operacional executaria essas mesmas solicitações e o RFC sublinhado para cada protocolo realmente opera em um nível OSI e não no nível "inserir ferramenta favorita aqui".
Em seguida, usando o dns para verificar os registros SRV _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs e _ldap._tcp:
nslookup -type=srv _kerberos._tcp.EXMAPLE.COM
nslookup -type=srv _kpasswd._tcp.EXAMPLE.COM
nslookup -type=srv _ldap._tcp.EXAMPLE.COM
nslookup -type=srv _ldap._tcp.dc._msdcs.EXAMPLE.COM
.EXAMPLE.COM ::= value returned from dhcp option-1
Isso se divide em três áreas, duas são registros DNS-SD suportados por protocolo:
_kerberos._tcpe _kpasswd._tcp(também em UNIX/Linux/OSX+algumas redes windows tem _kadmin._tcp) são para kerberos
_ldap._tcpé para ldap (openldap, opendc, diretório sun/oracle, ms ad)
_LDAP._TCP.dc._msdcsé a única extensão da Microsoft para ldap para mapear o controlador de domínio.
(Observação: o ponto final em "%userdnsdomain%." é proposital. Ele impede que seu nslookup local use qualquer string de caminho de pesquisa DNS.)
Encontre mais domínios DNS relacionados ao AD
Criei um arquivo de lote rápido e sujo, para não precisar lembrar os nomes de domínio DNS e/ou digitar todos eles. (A lista pode não estar completa.)
Funciona a partir de máquinas ingressadas no domínio. Se sua máquina não for ingressada no domínio, você deverá definir manualmente USERNSDOMAIN para o que deseja.
Salvar como TestAdDnsRecords.cmd:
@setlocal
@REM Test AD DNS domains for presence.
@REM For details see: http://serverfault.com/a/811622/253701
nslookup -type=srv _kerberos._tcp.%userdnsdomain%.
nslookup -type=srv _kerberos._udp.%userdnsdomain%.
@echo .
nslookup -type=srv _kpasswd._tcp.%userdnsdomain%.
nslookup -type=srv _kpasswd._udp.%userdnsdomain%.
@echo .
nslookup -type=srv _ldap._tcp.%userdnsdomain%.
@echo .
nslookup -type=srv _ldap._tcp.dc._msdcs.%userdnsdomain%.
@echo .
nslookup -type=srv _ldap._tcp.pdc._msdcs.%userdnsdomain%.
@echo .
@REM Those next few lines here are forest specific:
@REM Change the next line your current domain is not also the forest root.
@SET "DNSFORESTNAME=%USERDNSDOMAIN%"
nslookup -type=srv _ldap._tcp.gc._msdcs.%DNSFORESTNAME%.
@echo .
nslookup -type=srv _gc._tcp.%DNSFORESTNAME%.
Executar como TestAdDnsRecords.cmd | more. Há uma grande quantidade de saída de texto.
TechNet, Kits de Recursos > Guia de Sistemas Distribuídos > Gerenciamento de Configuração da Área de Trabalho > Active Directory > Resolução de Nomes no Active Directory > Localizando Servidores do Active Directory > Registros de Recursos SRV (Arquivado aqui .)
Vá para o prompt de comando e digite "net time" - ele buscará o nome do controlador de domínio junto com o tempo. Exemplo - "Hora atual em \{DCName} é {time}.
Em qualquer computador que tenha o DNS configurado para usar o servidor DNS do AD, faça:
Iniciar -> Executar ->
nslookup
Substitua DOMAIN_NAME pelo nome de domínio real, por exemplo, example.com . Leia mais aqui .
Para um computador que é membro de um domínio, a variável de ambiente LOGONSERVER contém o nome do controlador de domínio que autenticou o usuário atual. Obviamente, não serão todos os DCs em um ambiente multi-DC, mas se tudo o que você deseja é uma maneira rápida de encontrar o nome de um controlador de domínio, a partir de um shell de comando:
Retornará todas as variáveis de ambiente que começam com "L", incluindo o nome de um controlador de domínio.
Uma opção não mencionada, super fácil e rápida é executar isso em um prompt de comando:
Basta substituir 'domainname' pelo seu domínio
Você também pode executar algumas outras opções para saber mais:
/dcname:domainname
obtém o nome PDC para o domínio/dsgetdc:domainname
tem sinalizadores para outras informaçõesTente
nltest /?
em seu prompt para obter mais opções! :)Isso retornará seu controlador de domínio mais próximo no Powershell:
Em um prompt de comando do Windows, execute
gpresult
. Você vai ter:Aqui estão algumas análises de
gpresult
saída . Você também pode especificargpresult /z
para obter informações mais detalhadas.DNS e DHCP são a melhor maneira de verificar, pois pode haver máquinas Unix/Linux na rede gerenciadas pelo controlador de domínio AD ou atuando como controlador de domínio.
Além disso, considerar o diretório ativo nada mais é do que a versão da Microsoft de Kerberos, LDAP, dhcp e dns. Seria melhor entender e depurar coisas em camadas inferiores do que na camada 7+. Isso ocorre porque o sistema operacional executaria essas mesmas solicitações e o RFC sublinhado para cada protocolo realmente opera em um nível OSI e não no nível "inserir ferramenta favorita aqui".
Pode-se dar um passo adiante e consultar o dhcp para as opções 6, 15 e 44 para obter o nome de domínio , servidor de nome de domínio e servidor de nome Wins/NetBIOS .
Em seguida, usando o dns para verificar os registros SRV _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs e _ldap._tcp:
Isso se divide em três áreas, duas são registros DNS-SD suportados por protocolo:
_kerberos._tcp
e_kpasswd._tcp
(também em UNIX/Linux/OSX+algumas redes windows tem_kadmin._tcp
) são para kerberos_ldap._tcp
é para ldap (openldap, opendc, diretório sun/oracle, ms ad)_LDAP._TCP.dc._msdcs
é a única extensão da Microsoft para ldap para mapear o controlador de domínio.CMD bruto
Basta encontrar nomes DC
Salvar como
GetDcNames.cmd
:Execute como:
GetDcNames.cmd
.(Observação: o ponto final em "%userdnsdomain%." é proposital. Ele impede que seu nslookup local use qualquer string de caminho de pesquisa DNS.)
Encontre mais domínios DNS relacionados ao AD
Criei um arquivo de lote rápido e sujo, para não precisar lembrar os nomes de domínio DNS e/ou digitar todos eles. (A lista pode não estar completa.)
Funciona a partir de máquinas ingressadas no domínio. Se sua máquina não for ingressada no domínio, você deverá definir manualmente USERNSDOMAIN para o que deseja.
Salvar como
TestAdDnsRecords.cmd
:Executar como
TestAdDnsRecords.cmd | more
. Há uma grande quantidade de saída de texto.Fontes
Vá para o prompt de comando e digite "net time" - ele buscará o nome do controlador de domínio junto com o tempo. Exemplo - "Hora atual em \{DCName} é {time}.
Se você tiver acesso apenas ao DNS, poderá obter uma lista de todos os DCs com a seguinte consulta no PowerShell:
Isso pode ser feito por qualquer usuário com acesso ao DNS.