DCDiag
Aplica-se a: Windows Server 2022, Windows Server 2019, Windows Server 2016
O DCDiag.exe
analisa o estado dos DC (controladores de domínio) em uma floresta ou uma empresa e relata os problemas para ajudar na solução deles. Como um programa de relatório do usuário final, o DCDiag é uma ferramenta de linha de comando que encapsula o conhecimento detalhado de como identificar um comportamento anormal no sistema.
Por padrão, o DCDiag está prontamente disponível se conectado a um DC. Um método alternativo para acessar o DCDiag é instalar as RSAT (Ferramentas de Administração de Servidor Remoto) em seu dispositivo. O DCDiag deve ser executado com direitos administrativos de um CMD (prompt de comandos com privilégios elevados) no ou no PowerShell.
Ele consiste em uma estrutura para executar testes e uma série de testes para verificar diferentes áreas funcionais do sistema. Essa estrutura seleciona qual DC é testado de acordo com as diretivas de escopo do usuário, como empresa, site ou servidor único. Testar a conectividade geral e a capacidade de resposta do DC inclui verificar:
- O DC pode ser localizado no DNS
- O DC responde a pings do protocolo ICMP
- O DC permite a conectividade LDAP (Lightweight Directory Access Protocol) associando-se à instância
- O DC permite a associação à interface RPC do AD usando a função DsBindWithCred.
Observação
O bloqueio do ICMP impede que o DCDiag funcione conforme o esperado. Embora o bloqueio de ICMP seja recomendado na borda da Internet da rede, o bloqueio interno do tráfego ICMP leva a problemas administrativos que interrompem as políticas de grupo herdadas, a detecção de roteadores de buracos negros, ou tamanhos de MTU ineficientes devido à falta de uma opção de descoberta. Ferramentas de solução de problemas, como ping.exe
ou tracert.exe
também são afetadas.
Sintaxe do DCDiag
dcdiag [/s:<DomainController>] [/n:<NamingContext>] [/u:<Domain>\<UserName> /p:{* | <Password> | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:<LogFile>] [/c [/skip:<Test>]] [/test:<Test>] [/fix] [{/h | /?}] [/ReplSource:<SourceDomainController>]
O DCDiag usa os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
/s:<DomainController> |
Especifica o nome do servidor no qual o comando será executado. Se esse parâmetro não for especificado, os testes serão executados no controlador de domínio local. Esse parâmetro é ignorado para os testes DcPromo e RegisterInDns, que só podem ser executados localmente. |
/n:<NamingContext> |
Usa NamingContext como o contexto de nomenclatura a ser testado. Você pode especificar domínios no NetBIOS, no DNS (Sistema de Nomes de Domínio) ou em um formato de nome diferenciado. |
/u:<Domain> \<UserName> /p:{<Password> | ""} |
Usa Domain\UserName. O DCDiag usa as credenciais atuais do usuário (ou do processo) que está conectado. Se forem necessárias credenciais alternativas, use as opções a seguir para fornecer essas credenciais para associá-las com a senha como a senha: use aspas ("") para uma senha vazia ou nula. Use o caractere curinga (*) para solicitar a senha. |
/a | Testa todos os servidores neste site do AD DS. |
/e | Testa todos os servidores na empresa. Isso substitui /a . |
/q | Silencioso. Imprime somente as mensagens de erro. |
/v | Detalhado. Imprime informações estendidas. |
/fix | Afeta somente o teste MachineAccount. Esse parâmetro faz com que o teste corrija os SPNs (nomes da entidade de serviço) no objeto Conta do Computador do controlador de domínio. |
/f:<LogFile> |
Redireciona toda a saída para um arquivo de log. |
/c | Completo. Executa todos os testes, exceto DCPromo e RegisterInDNS, incluindo os testes não padrão. Opcionalmente, você pode usar esse parâmetro com o parâmetro /skip para ignorar os testes especificados.Os seguintes testes não são executados por padrão:
|
/h ou /? | Exibe a ajuda no prompt de comando. |
/test:<Test> |
Executa somente este teste. O teste de conectividade não pode ser ignorado com o parâmetro /skip . |
/ReplSource:<SourceDomainController> |
Testa a conexão entre o controlador de domínio no qual você executa o comando e o controlador de domínio de origem. (Esse parâmetro é usado para o teste CheckSecurityError). SourceDomainController é o nome DNS, o nome NetBIOS ou o nome diferenciado de um servidor real ou potencial que será o controlador de domínio de origem para replicação, conforme representado por um objeto de conexão real ou potencial. |
Testes conhecidos de DCDiag
A tabela a seguir exibe testes conhecidos que são executados por padrão, a menos que especificado de outra forma.
Teste | Descrição |
---|---|
Publicidade | Verifica se cada controlador de domínio se anuncia nas funções que deve ter a capacidade de executar. Esse teste valida que a função pública DsGetDcName usada por computadores para localizar controladores de domínio localizará corretamente todos os DCs. Ocorrerá uma falha nesse teste se o serviço Netlogon tiver parado ou não tiver sido iniciado. Se o serviço KDC (Centro de distribuição de chaves) for interrompido, o teste de publicidade falhará, pois o sinalizador retornado de DsGetDcName não incluirá o KDC. Se a porta 88 sobre TCP e UDP estiver bloqueada em um firewall, o teste de publicidade será aprovado apesar de o KDC não ser capaz de responder às solicitações de tíquetes Kerberos. |
CheckSDRefDom | Verifica se todas as partições de diretório de aplicativo têm domínios apropriados de referência de descritor de segurança. Esse teste usa LDAP e valida objetos de referência cruzada localizados em cn=partições,cn=configuração,dc=<domínio raiz da floresta> contêm os nomes de domínio corretos em seus atributos msDS-SDReferenceDomain. |
CheckSecurityError | O teste não é executado por padrão. Executa várias verificações de segurança para erros relacionados aos componentes de segurança do DC, como problemas com a política de segurança ou o banco de dados de segurança usando LDAP, RPC, RPC sobre SMB e ICMP. Ele verifica:
Quando o parâmetro /ReplSource é adicionado, o parceiro também verifica:
|
Conectividade | Verifica se o DSA e o DNS estão registrados e acessíveis usando LDAP e RPC. |
CrossRefValidation | Recupera uma lista de contextos de nomenclatura localizados em cn=partições,cn=configuração,dc=< domínio raiz da floresta> com suas referências cruzadas e, seguida, os valida de forma semelhante ao teste CheckSDRefDom usando LDAP. Este teste examina os atributos nCName, dnsRoot, nETBIOSName e systemFlags para:
|
CutoffServers | Testa a replicação do AD para garantir que não haja DCs sem objetos de conexão de trabalho entre parceiros. Todos os servidores que não puderem replicar entrada ou saída de quaisquer DCs são considerados "cortados" usando a função DsReplicaSyncAll, que dispara a replicação nos DCs. Use o parâmetro /e com cuidado se houver links WAN implementados de forma inadequada que são mantidos limpos usando agendamentos. Se um servidor não puder ser contatado ou não estiver disponível para LDAP na rede, ele não fornecerá nenhum erro ou resultados de teste, mesmo que o parâmetro /v seja especificado. Este teste usa RPC. |
DcPromo | Testes no servidor especificado nas configurações de DNS do cliente se a infraestrutura atender aos requisitos necessários para promover seu dispositivo a um DC. Este teste usa o DNS na rede e verifica:
Os seguintes argumentos são necessários:
|
DFSREvent | Esse teste valida a integridade do serviço DFSR (Replicação do Sistema de Arquivos Distribuídos) verificando o aviso do log de eventos DFSR e as entradas de erro das últimas 24 horas. Esse teste usa RPC e Protocolo Remoto de EventLog. |
DNS | Testa verificações de integridade de DNS em toda a empresa usando protocolos DNS, RPC e WMI. Não é executado por padrão e deve ser solicitado explicitamente. Confira sintaxe DNS. |
FrsEvent | Verifica se há erros no log de eventos do FRS (Serviço de Replicação de Arquivos) das últimas 24 horas, pois a replicação com falha no compartilhamento SysVol pode causar problemas de política. Esse teste usa RPC e Protocolo Remoto de EventLog. |
Intersite | Verifica se há falhas que impedem ou mantêm temporariamente a replicação entre sites e prevê quanto tempo levará para o KCC se recuperar. Este teste usa funções DRS para verificar se há condições que impediriam a replicação do AD entre sites em um site específico ou em todos os sites:
O parâmetro /a or /e deve ser usado, pois não fornecer um site permitiria a execução do teste, mas ignoraria o teste real. Esse teste usa RPC pela rede para testar os aspectos de replicação e pede às conexões do Registro para verificar se há entradas de substituição de NTDS. O LDAP também é usado para localizar informações de conexão. |
KccEvent | Este teste consulta o KCC no DC em busca de erros e avisos gerados no log de eventos dos Serviços de Diretório durante os últimos 15 minutos. O limite de 15 minutos independe do valor do Registro do período de atualização da topologia Repl (s) no DC. Se as regras de firewall estiverem causando a falha nesse teste, confira KB2512643, que aborda a habilitação dessas regras para permitir que o teste seja bem-sucedido. Este teste usa RPC junto com o protocolo EventLog Remoting. |
KnowsOfRoleHolders | Este teste retorna o conhecimento dos DCs das cinco funções FSMO (Flexible Single Master Operation), mas não verifica a consistência de todo o conhecimento dos DCs. O uso do parâmetro /e fornece dados para comparação. Este teste usa RPC para retornar DSListRoles dentro das funções do DRS (Serviço de Replicação de Diretório). |
MachineAccount | Verifica se a conta do computador foi registrada corretamente e se os serviços foram anunciados usando LDAP e RPC sobre SMB, incluindo verificação:
Este teste também tem duas opções de reparo:
|
NCSecDesc | Verifica as permissões em todos os contextos de nomenclatura (como Esquema, Configuração etc.) no DC de origem para validar se a replicação e a conectividade funcionam entre DCs. Ele garante que os grupos Controladores de Domínio Corporativoe Administradores tenham as permissões mínimas corretas, que é o mesmo teste executado em CheckSecurityError. Este teste usa LDAP. |
NetLogons | Valida se o usuário que executa o DCDiag pode se conectar e ler os compartilhamentos SYSVOL e NETLOGON sem erros de segurança. Também verifica se os grupos Administradores, Usuários Autenticados e Todos têm o privilégio acessar este computador da rede no DC. |
ObjectsReplicated | Verifica se os objetos DSA (Agente do Sistema de Diretório) e Conta do Computador foram replicados. Dois objetos são validados por padrão, além do fato de eles existirem em cada DC e estarem atualizados em todos os outros DCs:
Use o parâmetro /objectdn:dn com o parâmetro /n:nc para especificar um objeto adicional para verificação. Este teste é feito usando RPC com funções DRS. |
OutboundSecureChannels | Esse teste não é executado por padrão. Verifica se existem canais seguros de todos os controladores de domínio no domínio para os domínios especificados pelo parâmetro /testdomain . O parâmetro /nositerestriction impede que o DCDiag limite o teste aos controladores de domínio no site. |
RegisterInDNS | Testa se o servidor de diretório pode registrar os registros DNS do localizador de servidor de diretório. Esses registros devem estar presentes no DNS para que outros computadores localizem esse servidor de diretório para o domínio Active_Directory_Domain_DNS_Name<>. Isso também relata se alguma modificação na infraestrutura DNS existente é necessária. O parâmetro /DnsDomain :<Active_Directory_Domain_DNS_Name> deve ser usado. Este teste verifica:
|
Replicações | Este teste verifica todos os objetos de conexão de replicação do ADpara todos os contextos de nomenclatura no(s) DC(s) especificado(s) se:
|
RidManager | Verifica se o mestre RID (identificador relativo) está acessível e se:
O titular da função deve estar online e acessível para que os DCs possam criar entidades de segurança (usuários, computadores e grupos), bem como para que outros DCs sejam promovidos dentro de um domínio. Este teste usa LDAP e RPC. |
Serviços | Esse teste valida se vários serviços dependentes do AD estão em execução, são acessíveis e definidos como tipos de início específicos. Esses serviços são iniciados automaticamente e executados em um processo compartilhado, a menos que especificado de outra forma:
Esses nomes de serviço estão listados no caminho do Registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Esse teste usa RPC e o protocolo remoto do Gerenciador de Controle de Serviços. |
SysVolCheck | Este teste lê a chave do Registro SysVolReady de Netlogon dos DCs para validar se o SYSVOL está pronto. O nome do valor deve existir com um valor de 1 para passar nesse teste e funciona com SYSVOLs replicados por FRS ou DFSR. Ele não verifica se os compartilhamentos SYSVOL e NELOGON estão acessíveis, pois isso é executado por CheckSecurityError. Este teste usa RPC sobre SMB. |
SystemLog | Valida a integridade do Log de Eventos do Sistema lendo e gravando entradas de quaisquer erros e avisos dos últimos 60 minutos. Esse teste usa RPC e o protocolo remoto do Gerenciador de Controle de Serviços. |
Topologia | Verifica se a topologia de replicação do AD gerada está totalmente conectada para todos os DSAs. Esse teste não é executado por padrão e deve ser executado explicitamente. Ele verifica:
Esse teste usa RPC, LDAP e DsReplicaSyncAll com o sinalizador DS_REPSYNCALL_DO_NOT_SYNC, o que significa que ele analisa e valida a topologia de replicação sem realmente replicar as alterações. Esse teste não valida a disponibilidade de parceiros de replicação. Ter um parceiro offline não causará falhas neste teste. Ele também não testa se a agenda está fechada, impedindo a replicação. Para ver esses resultados de replicação ativos, use os testes Replications ou CutoffServers. |
VerifyEnterpriseReferences | Verifica se as referências de sistema especificadas estão intactas para o FRS e para a infraestrutura de replicação em todos os objetos da empresa em cada controlador de domínio. Isso inclui os seguintes objetos e atributos de site do DC:
Os dois testes DFSR só são executados se o nível funcional do domínio for Windows Server 2008 ou superior. Isso significa que haverá uma falha esperada se o DFSR não tiver sido migrado para o SYSVOL. Esse teste usa LDAP e somente os DCs especificados são contatados. |
VerifyReferences | Verifica se determinadas referências do sistema estão intactas para o FRS e a infraestrutura de replicação. Este teste verifica os atributos de referência do computador para um único DC, incluindo os seguintes atributos e objetos de site de DC:
Esse teste usa LDAP e é semelhante ao teste VerifyEnterpriseRefrences, exceto pelo fato de que não verifica referências cruzadas de partição ou todos os outros objetos de DC. |
VerifyReplicas | Verifica se foram criadas instâncias para todas as partições de diretório do aplicativo em todos os servidores de réplica. Ele verifica se o servidor especificado hospeda as partições de aplicativo especificadas por seus atributos crossref no contêiner de partições. Ele opera como CheckSDRefDom, exceto por não mostrar dados de saída, e valida a hospedagem. Este teste usa LDAP. |
Observação
As verificações de conectividade nos controladores de domínio registrados na rede e que se conectam a outros recursos, como DNS, LDAP e RPC, não podem ser ignoradas.
Sintaxe DNS
dcdiag /test:DNS [/DnsBasic | /DnsForwarders | /DnsDelegation | /DnsDynamicUpdate | /DnsRecordRegistration | /DnsResolveExtName [/DnsInternetName:<InternetName>] | /DnsAll] [/f:<LogFile>] [/x:<XMLLog.xml>] [/xsl:<XSLFile.xsl> or <XSLTFile.xslt>] [/s:<DomainController>] [/e] [/v]
O teste de DNS usa os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
/test:DNS | Executa o teste DNS especificado. Se nenhum teste for especificado, /DnsAll será usado como padrão. |
/DnsBasic | Executa testes de DNS básicos, incluindo conectividade de rede, configuração do cliente DNS, disponibilidade de serviço e existência de zona. |
/DnsForwarders | Executa os testes /DnsBasic e verifica a configuração de encaminhadores. |
/DnsDelegation | Executa os testes /DnsBasic e verifica se há delegações adequadas. |
/DnsDynamicUpdate | Executa os testes /DnsBasic e determina se a atualização dinâmica está habilitada na zona do Active Directory. |
/DnsRecordRegistration | Executa os testes /DnsBasic e verifica se o endereço (A), o nome canônico (CNAME) e os registros de recursos de serviço conhecido (SRV) estão registrados. Além disso, cria um relatório de inventário com base nos resultados do teste. |
/DnsResolveExtName [/DnsInternetName:\<InternetName> ] |
Executa os testes /DnsBasic e tenta resolver InternetName. Se /DnsInternetName não for especificado, tentará resolver o nome <www.microsoft.com>. Se /DnsInternetName for especificado, tentará resolver o nome da Internet fornecido pelo usuário. |
/DnsAll | Executa todos os testes, exceto o teste /DnsResolveExtName , e gera um relatório. |
/f:<LogFile> |
Redireciona toda a saída para um arquivo de log. |
/s:<DomainController> |
Executa os testes no controlador de domínio. Se esse parâmetro não for especificado, os testes serão executados no controlador de domínio local. |
/e | Executa todos os testes especificados por /test:DNS em todos os controladores de domínio da floresta do Active Directory. |
/v | Detalhado. Apresenta informações estendidas sobre os resultados de teste bem-sucedidos, além de informações sobre erros e avisos. Quando o parâmetro /v não é usado, fornece apenas informações de erro e aviso. Use a opção /v quando erros ou avisos forem relatados na tabela de resumo. |
/x:<XMLLog.xml> |
Redireciona toda a saída para xmllog.xml. Esse parâmetro só funciona com a opção /test:DNS . |
/xsl:<XSLFile.xsl> ou /xsl: <XSLTFile.xslt> |
Adiciona as instruções de processamento que referenciam a planilha especificada. Esse parâmetro só funciona com a opção /test:DNS /x:<XMLLog.xml . |
Observação
Os tempos de execução para os testes de DNS podem ser significativos em empresas de grande porte quando o parâmetro /e
é usado. Os controladores de domínio e os servidores DNS offline aumentarão os tempos de execução devido a longos períodos de tempo limite para a RPC e outros protocolos.
Exemplos
Teste de conectividade
Para executar uma série de testes de conectividade no domínio local, execute o seguinte comando:
dcdiag
Uma saída de teste de conectividade bem-sucedida:
Directory Server Diagnosis
Performing initial setup:
Trying to find home server...
Home Server = MapleWaffle-WS22
* Identified AD Forest.
Done gathering initial info.
Doing initial required tests
Testing server: Default-First-Site-Name\MAPLEWAFFLE-WS2
Starting test: Connectivity
......................... MAPLEWAFFLE-WS2 passed test Connectivity
Doing primary tests
Testing server: Default-First-Site-Name\MAPLEWAFFLE-WS2
Starting test: Advertising
......................... MAPLEWAFFLE-WS2 passed test Advertising
Starting test: FrsEvent
......................... MAPLEWAFFLE-WS2 passed test FrsEvent
Starting test: DFSREvent
......................... MAPLEWAFFLE-WS2 passed test DFSREvent
Starting test: SysVolCheck
......................... MAPLEWAFFLE-WS2 passed test SysVolCheck
Starting test: KccEvent
......................... MAPLEWAFFLE-WS2 passed test KccEvent
Starting test: KnowsOfRoleHolders
......................... MAPLEWAFFLE-WS2 passed test KnowsOfRoleHolders
Starting test: MachineAccount
......................... MAPLEWAFFLE-WS2 passed test MachineAccount
Starting test: NCSecDesc
......................... MAPLEWAFFLE-WS2 passed test NCSecDesc
Starting test: NetLogons
......................... MAPLEWAFFLE-WS2 passed test NetLogons
Starting test: ObjectsReplicated
......................... MAPLEWAFFLE-WS2 passed test ObjectsReplicated
Starting test: Replications
......................... MAPLEWAFFLE-WS2 passed test Replications
Starting test: RidManager
......................... MAPLEWAFFLE-WS2 passed test RidManager
Starting test: Services
......................... MAPLEWAFFLE-WS2 passed test Services
Starting test: SystemLog
......................... MAPLEWAFFLE-WS2 passed test SystemLog
Starting test: VerifyReferences
......................... MAPLEWAFFLE-WS2 passed test VerifyReferences
Running partition tests on : ForestDnsZones
Starting test: CheckSDRefDom
......................... ForestDnsZones passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... ForestDnsZones passed test CrossRefValidation
Running partition tests on : DomainDnsZones
Starting test: CheckSDRefDom
......................... DomainDnsZones passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... DomainDnsZones passed test CrossRefValidation
Running partition tests on : Schema
Starting test: CheckSDRefDom
......................... Schema passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... Schema passed test CrossRefValidation
Running partition tests on : Configuration
Starting test: CheckSDRefDom
......................... Configuration passed test
CheckSDRefDom
Starting test: CrossRefValidation
......................... Configuration passed test
CrossRefValidation
Running partition tests on : corp
Starting test: CheckSDRefDom
......................... corp passed test CheckSDRefDom
Starting test: CrossRefValidation
......................... corp passed test CrossRefValidation
Running enterprise tests on : corp.contoso.com
Starting test: LocatorCheck
......................... corp.contoso.com passed test
LocatorCheck
Starting test: Intersite
......................... corp.contoso.com passed test
Intersite
Para executar uma série de testes de conectividade em um controlador de domínio específico, execute o seguinte comando:
dcdiag /s:<DomainControllerName>
Ele vai gerar resultados semelhantes ao teste local se nenhum problema for encontrado.
Saída para um arquivo de log
O DCDiag pode salvar os resultados da saída em um arquivo de texto executando:
dcdiag /s:<DomainControllerName> /f:<FileName.txt>
Se nenhum <FilePath>
for especificado, os resultados serão salvos em C:\Users\<UserName>\<FileName.txt>
por padrão.
Para salvá-los em um local específico, execute:
dcdiag /s:<DomainControllerName> /f:<DriveLetter>\<FilePath>\<FileName.txt>