Como posso verificar a configuração NTP atual de um sistema?

65

Preciso verificar a configuração atual do NTP em alguns sistemas Windows. Idealmente, eu gostaria de poder fazer isso via linha de comando, em vez de navegar pelas telas de configuração.

(Estou trabalhando em várias versões diferentes do SO, e as telas de configuração nem sempre estão no mesmo lugar entre as versões.)

Espero encontrar um comando rápido e memorável que possa ser inserido em um console CMD para obter o resultado. Um arquivo em lote que eu possa carregar comigo também será bom.

Especificamente, preciso do seguinte:

  • Mostrar se o sistema está ou não configurado para receber tempo de um servidor NTP.
  • Mostra os servidores NTP dos quais o sistema está recebendo tempo.
  • Mostra a hora da última sincronização.
  • Mostra a hora atual no sistema.

Que comando (s) seria necessário para alcançar esses resultados?

Procurando uma solução compatível com o Windows XP, 7, Server 2003 e Server 2008.

Iszi
fonte
Eu sei que para verificar o tempo, você pode fazer "net time \\ nomedocomputador" para obter o tempo do PC remoto. Não acho que o tempo líquido permita visualizar a última sincronização ... no entanto, "tempo líquido?" fornece uma opção de conjunto, então é como 1/2 do que você está procurando.
Supercereal
@ Kyle Acabei de descobrir que net time /querysntpmostra o servidor. Obter o resto pode ser complicado.
Iszi 16/05
3
No Windows 7, o tempo líquido / querysntp foi preterido.
Daniel

Respostas:

82

Na linha de comando, digite

w32tm /query /configuration
w32tm /query /status
Time /T 

w32tm /query /configuration fornece a configuração que você definiu.

w32tm /query /status fornece informações como:

  • estrato
  • indicador de salto
  • precisão
  • última sincronização
  • Servidor NTP
  • intervalo de pesquisa

time /T gera a hora atual do sistema.

Nota: w32tm /queryfoi disponibilizado pela primeira vez nas versões do cliente Windows Time do Windows Vista e Windows Server 2008. Consulte Ferramentas e configurações do serviço de horário do Windows

Phillip R.
fonte
5
Não é bom no XP. "O comando / consulta é desconhecido."
Iszi 16/05
Qual é a diferença entre time /te o tempo mostrado no canto inferior direito da barra de tarefas?
Pacerier
Para o primeiro, w32tm /query /configurationrecebo "O seguinte erro ocorreu: Acesso negado. (0x80070005)" . Eu acho que tenho direitos suficientes.
Peter Mortensen
3
Você precisa estar em uma janela de comando elevada para essa.
Phillip R.
16

Isso responde à sua última pergunta:

Abra um prompt de comando e digite exatamente:

w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x (quantos retornos você deseja)

Retorna a hora e a diferença para a hora do servidor NTP. Se retornar a hora, erro: 0x80072746, esse não é o seu servidor NTP.

Um exemplo de comando está abaixo:

Exemplo de comando

Byron
fonte
Você pode formatar esta resposta?
Ramhound 11/07
A forma como ele se formata é estranho. Alterado
Byron
8

Eu tentei:

w32tm /query /status

Eu tenho:

The command /query is unknown.

Em uma máquina diferente, obtive:

The following error occurred: The service has not been started. (0x80070426)

Então eu tentei:

reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time

Eu tenho:

ERROR: The system was unable to find the specified registry key or value.

Então eu tentei:

net time /querysntp

Eu tenho:

This computer is not currently configured to use a specific SNTP server.

Em outra máquina, recebi a página de ajuda, dizendo também:

The /QUERYSNTP and /SETSNTP options have been deprecated. Please use w32tm.exe to configure the Windows Time Service.

Então, basicamente, o serviço não estava sendo executado. Seguindo estas instruções, eu fiz:

w32tm /unregister
w32tm /unregister
w32tm /register
net start w32time

Finalmente, tudo isso funcionaria. (nota: se net startfalhar, veja abaixo) Então eu só precisava configurar meu ntp ... fiz isso com:

w32tm /config /manualpeerlist:10.0.0.5 /syncfromflags:manual /reliable:yes /update

seguindo as instruções daqui , mas talvez pudesse ter sido tão fácil quanto:

net time /setsntp:10.0.0.5

como instruído aqui . (10.0.0.5 é o meu servidor NTP local). Se você não estiver usando um servidor NTP local, poderá usar o genérico:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes /update

Por fim, pode ser necessário fazer o seguinte, o que não era necessário para mim:

w32tm /config /update
w32tm /resync /rediscover

NOTA: se net start w32timefalhar com o erro 1290 (a inicialização do serviço falhou, pois um ou mais serviços no mesmo processo têm uma configuração de tipo de SID de serviço incompatível), siga as etapas aqui :

w32tm /unregister
w32tm /register
sc config w32time type= own
net start w32time

Então siga como acima.


NOTA 2: se o serviço NTP não iniciar automaticamente na reinicialização, talvez seja devido às suas configurações de inicialização, conforme descrito aqui : dependendo do seu Windows, ele poderá ser configurado para iniciar apenas quando ingressar em um domínio. Você pode verificar com:

sc qtriggerinfo w32time

Se ele estiver configurado para iniciar quando você ingressar em um domínio, e você não tiver um domínio configurado em sua máquina, ele não iniciará o serviço e definirá o horário. Provavelmente não ingressa em um domínio porque você não deseja. De qualquer forma, basta alterar o gatilho que o inicia. Por exemplo, para iniciar quando a máquina tiver rede (e, portanto, conseguir acessar o servidor), faça:

sc triggerinfo w32time start/networkon stop/networkoff
msb
fonte
4

Usar:

net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.it.pool.ntp.org 1.it.pool.ntp.org 2.it.pool.ntp.org 3.it.pool.ntp.org"
net start w32time
w32tm /config /update
w32tm /resync /rediscover

Um arquivo de exemplo .bat está em https://gist.github.com/thedom85/dbeb58627adfb3d5c3af .

Eu também recomendo este programa: http://www.timesynctool.com/

user565386
fonte
3

Na linha de comando, você pode obter informações como estas:

reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config

Parece que isso deve ser suficiente, pelo menos, para ir nessa direção, isto é, se eu entendi sua pergunta. AFAIK, o comando 'reg' funciona em todas essas plataformas diferentes, desde que você tenha os serviços corretos em execução.

osirisgothra
fonte
Eu recebi: "ERRO: O sistema não conseguiu encontrar a chave ou o valor do registro especificado." Acontece que o W32Time não foi iniciado ...
msb 13/03
Então " [\\machine\]" significa que pode ser deixado de fora se estiver na mesma máquina?
Peter Mortensen
2

Dê uma olhada na w32tmferramenta de linha de comando. Ele pode definir e consultar a configuração e reportar um / stripchart do tempo compensado com outro computador.

uSlackr
fonte
11
A /queryopção não está disponível no XP.
Iszi 16/05
5
Tente net time /querysntp.
Fran
11
@ Frank Isso funciona. Eu esperava obter um comando que fosse de plataforma cruzada, mas parece que devo ter que usar dois diferentes - ou gravar um arquivo em lotes que inclua a detecção de plataforma para determinar quais comandos executar.
Iszi
11
@lszi Nos meus scripts, testo a existência de C: \ users. Se eu encontrar essa pasta, sei que estou em uma caixa pós-XP.
Fran
11
@Fran Você poderia escrever sua própria resposta que inclui os dois comandos? Além disso, qual comando eu usaria para verificar o último horário de sincronização bem-sucedida do XP?
Iszi 6/06