Como forço a sincronização da hora no Windows Workstation ou Server?


Respostas:


81

Como Kyle disse, w32tm /resyncé a maneira moderna de fazer isso. Consulte este link para a Base de Conhecimento Microsoft (KB 307897) para obter mais informações sobre o comando w32tm.

Há também net timeuma versão mais antiga, mas talvez mais fácil.


4
w32tm /resyncdiz "O computador não ressincronizou porque a mudança de horário necessária era muito grande". como minha bateria CMOS está descarregada e o relógio do computador é redefinido a cada inicialização em 1/1/2000 12:00. Qualquer ajuda?
Nunca saia

Solução encontrada conforme blog.bruteforcetech.com/archives/911 , não se esqueça de reiniciar o serviço W32Time net stop W32Timee tente novamentew32tm /resync
Never Quit

1
O link está quebrado.
Stijn Sanders

2
@LightnessRacesinOrbit e os outros, se você receber o erro "a mudança de horário era muito grande", use w32tm /resync /force. Mas se você não tiver o serviço iniciado, execute net start w32time. Ambos a partir de um prompt elevado.
Cdlvcdlv 25/05

4
Para resolver 'a mudança de horário era muito grande', altere as entradas de registro MaxNegPhaseCorrection e MaxPosPhaseCorrection em HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ Config ao máximo (ffffffff)
Tomas F.

37

Para aqueles que ainda fazem esta pergunta.

  1. Para atualizar, use o comando abaixo (compatível com o servidor 2008 e 2012)

    w32tm /config /manualpeerlist:"ntp_server" /syncfromflags:manual /reliable:yes /update
    

mude o ntp_server com sua fonte

  1. Reinicie o serviço de horário

    net stop w32time
    net start w32time
    
  2. Sincronizar novamente a hora

    w32tm /resync
    
  3. Verifique seu status de sincronização

    w32tm /query /status
    

Os comandos acima devem ser bons se suas fontes estiverem funcionando corretamente e / ou sua conexão estiver correta (firewall ou Microsoft Forefront também podem ser um problema). Os comandos abaixo podem ajudar na solução de problemas

Para listar pares

w32tm /query /peers

Para listar fontes NTP:

w32tm /query /source

Resposta agradável e abrangente! Definitivamente +1 para o comando configurar o servidor NTP.
Shaamaan

Como observação, isso funciona no Windows 10 Professional sem o sinalizador "/ update", pois é inválido.
Fmstrat

Para solução de problemas, geralmente é útil testar a conexão com um servidor específico:w32tm /monitor /computers:time.windows.com
Randy Orrison


16

Você pode usar:

w32tm /resync

Além disso, o uso w32tm /resync /rediscovertambém "forçará a redetecção de recursos da rede antes da ressincronização".

Ou usando:

net time /set

Solicitará que você defina a hora para o controlador de domínio. (Funciona para versões mais antigas do Windows)


2
Por alguma razão w32tm /resync, não funcionou para mim, mas net time /SET /Yfuncionou. I utilizado /Ypara net timeporque aparentemente não lê stdin corretamente quando passar por sshd do cygwin.
precisa saber é o seguinte

Ao executar w32tm /resync, recebi a mensagem The computer did not resync because no time data was available.mesmo após a reinicialização do serviço, mas net time /SETfuncionou corretamente para mim.
Chris Magnuson

3

SO: MS Windows 7

Todas as idéias acima foram tentadas, mas não ajudaram. O problema original ainda existe: " O computador não ressincronizou porque a mudança de horário necessária era muito grande " .

A solução foi encontrada no registro: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ w32time \ Config

  • altere isso se a hora local estiver com pressa (por exemplo, 31 de dezembro de 2050): MaxNegPhaseCorrection
  • altere isso se a hora local estiver atrasada (por exemplo, 1 de janeiro de 1980): MaxPosPhaseCorrection
  • Os valores padrão são 0xD2F0 (ou seja, 54000 seg. = 15 horas)

(use o Google para mais detalhes)

Eu uso esse win_clock_sync.batarquivo simples no Start Menu StartUp:

echo off
echo Sync computer time from internet
echo.
echo Back-up registry w32time\Config
reg export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config exported_w32time.reg /y
rem changing the registry keys temporarly:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config /v MaxNegPhaseCorrection /d 0xFFFFFFFF /t REG_DWORD /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config /v MaxPosPhaseCorrection /d 0xFFFFFFFF /t REG_DWORD /f
echo.
echo w32tm /config /update
w32tm /config /update
echo.
echo w32tm /resync /rediscover 
w32tm /resync /rediscover 
echo.
echo Restore registry w32time\Config
reg import exported_w32time.reg

Desfrutar! :-)


Sua resposta pode usar uma explicação da função dos valores MaxNegPhaseCorrectione em MaxPosPhaseCorrectionvez de sugerir que eles sejam desativados cegamente. É isso que esse script faz definindo seus dados para 0xFFFFFFFF .
Twisty Imitador de

Você não pode ignorar a mensagem de erro mencionada "O computador não ressincronizou porque a alteração de horário necessária era muito grande". sem alterar os dados nos valores MaxNegPhaseCorrection e MaxPosPhaseCorrection. Ou você encontrou alguma solução para o problema original? E por que você está escrevendo "cegamente"? Se você demorar um pouco para ler, poderá ver a exportação e importação dos dados originais desses valores, o que está um pouco longe de fazer algo "às cegas".
Akos 14/05

Você deve fazer com que este script altere os valores para desativado, force uma atualização e, em seguida, altere-os novamente para os valores recomendados.
Cory Knutson

O Twisty possui pontos válidos que realmente não se concentram no problema levantado pelo NeverQuit ... mas a Akos não explicou claramente por que o script é uma solução apropriada para o NeverQuit. Em essência, os valores do Registro MaxNegPhaseCorrection e MaxPosPhaseCorrection existem para impedir que o serviço W32Time aplique mudanças drásticas no tempo atual [em circunstâncias como uma fonte de tempo externa dando muito errado] No entanto, se ocorrer algum problema que leve a um PDCe a desviar rapidamente de um fonte de tempo confiável, os controles de correção evitarão que o w32tm conserte a grande deriva. Nesta situação ::: b
Creaky_Uncle_Nick

O @Akos Downvote foi retirado com base no fato de você apontar que seu script realmente reverte as alterações nos valores MaxNegPhaseCorrectione MaxPosPhaseCorrection. Ainda incentivo a inclusão de uma explicação sobre o que essas duas configurações fazem, pois são um recurso essencial da sua resposta e é importante que um administrador esteja ciente de que, caso as coloque em prática permanentemente, configuraria o sistema para aceitar qualquer alteração de horário, não importa o tamanho, o que poderia quebrar o Kerberos e outros serviços importantes da rede.
Twisty Imitador de

2

Powershell um liner se o servidor ntp estiver configurado:

gsv w32time | sasv; w32tm /resync /force

Você pode colocar esse arquivo .bat na inicialização se a bateria do CMOS falhar, para que possa sincronizar novamente ao iniciar o sistema operacional:

@powrshell -NoProfile -Command 'gsv w32time | sasv; w32tm /resync /force'

/forcenão é uma opção de linha de comando documentada para w32tm /resync.
Dai


0

Tente nesta ordem. Funciona o tempo todo.

w32tm /unregister

w32tm /register

net stop w32time

net start w32time

w32tm /resync

0

Quase nenhuma das soluções (exceto @Akos) funciona se o host for um ADDC (Active Directory Domain Controller) do Windows Server 2016, pois se trata de uma fonte "confiável" que não pode fazer grandes mudanças.

w32tm /resync /forcenão funciona, porque o /forcenão aparece no servidor 2016.

net time /SET /Y também não funciona, porque teria perguntado:

Deseja definir a hora do computador local para corresponder à hora \AD.example.net? (S / N) [S]

Obviamente, não funcionará se você estiver ligado AD.example.net, /Yapenas oculta a questão.

As etapas funcionam para mim usando o PowerShell:

  1. Defina o serviço w32time como não confiável :
w32tm /config /reliable:no /syncfromflags:manual /update

Opção /syncfromflags:manualsignifica sincronizar com o NTP listado na lista de pares (por exemplo, NTP externo), /updatepara notificar o horário em que a configuração foi alterada.

  1. Reinicie o w32time
Stop-Service w32time
Start-Service w32time
  1. Sincronizar
w32tm /resync

Isso deve funcionar.

  1. Se você precisar do ADDC como uma fonte de tempo confiável, torne-o confiável novamente:
w32tm /config /reliable:yes /update
Stop-Service w32time
Start-Service w32time

0

Eu tenho uma imagem do Win10 que posso restaurar em um instantâneo em que essa mensagem de erro é sempre reproduzível: "The computer did not resync because the required time change was too big."

Eu tentei criar um script para uma solução para esse problema sem sucesso:

reg import nettime.reg # updates MaxPosPhaseOffset and MaxNegPhaseOffset

net start w32time
w32tm.exe /config /manualpeerlist:"pool.ntp.org",0x8 /syncfromflags:manual /reliable:no /update  
w32tm.exe /query /configuration
w32tm.exe /resync /rediscover
w32tm.exe /resync /force

Nem as /reliable:nonem as MaxPosPhaseCorrectionconfigurações, nem quaisquer outros comandos indicados aqui trabalhou imediatamente de uma maneira reprodutível.

Depois de atualizar o registro, iniciar o serviço, atualizar a configuração e reiniciar novamente o serviço, eu ainda tinha que esperar muitos minutos para w32tm /resync /rediscoverconseguir.

A sincronização do tempo é bem-sucedida eventualmente, mas não de maneira oportuna e confiável.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.