Come forzare la sincronizzazione dell'ora su Windows Workstation o Server?


Risposte:


81

Come ha detto Kyle w32tm /resyncè il modo moderno di farlo. Vedere questo collegamento a Microsoft Knowledge Base (307897 KB) per ulteriori informazioni sul comando w32tm.

Esiste anche net timeuna versione precedente ma forse più semplice.


4
w32tm /resyncdice "Il computer non si è risincronizzato perché la modifica dell'ora richiesta era troppo grande". poiché la batteria CMOS è scarica e l'orologio del computer si ripristina ad ogni avvio alle 1/1/2000 12:00 AM. Qualsiasi aiuto?
Non uscire mai dal

Soluzione trovata come da blog.bruteforcetech.com/archives/911 , non dimenticare di riavviare il servizio W32Time net stop W32Timequindi riprovarew32tm /resync
Non uscire mai dal

1
Il collegamento è interrotto.
Stijn Sanders,

2
@LightnessRacesinOrbit e gli altri, se viene visualizzato l'errore "il cambio di tempo era troppo grande", utilizzare w32tm /resync /force. Ma se non hai avviato il servizio, esegui net start w32time. Entrambi da un prompt elevato.
cdlvcdlv,

4
Per risolvere "il cambiamento di tempo era troppo grande" cambia le voci di registro MaxNegPhaseCorrection e MaxPosPhaseCorrection in HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ Config al massimo (ffffffff)
Tomas F.

37

Per quelli che ancora fanno questa domanda.

  1. Per aggiornare, utilizzare il comando seguente (compatibile con server 2008 e 2012)

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

cambia ntp_server con la tua fonte

  1. Riavvia il servizio orario

    net stop w32time
    net start w32time
    
  2. Risincronizza l'ora

    w32tm /resync
    
  3. Verifica il tuo stato di sincronizzazione

    w32tm /query /status
    

I comandi sopra dovrebbero andare bene se le tue fonti funzionano correttamente e / o la tua connessione è OK (anche il firewall o Microsoft Forefront possono essere un problema). I comandi seguenti possono aiutare con la risoluzione dei problemi

Per elencare i colleghi

w32tm /query /peers

Per elencare le fonti NTP:

w32tm /query /source

Risposta piacevole e completa! +1 preciso per il comando per configurare il server NTP.
Shaamaan,

Come nota, questo funziona con Windows 10 Professional senza il flag "/ update" poiché non è valido.
Fmstrat,

Per la risoluzione dei problemi, è spesso utile testare la connessione a un server specifico:w32tm /monitor /computers:time.windows.com
Randy Orrison


16

Puoi usare:

w32tm /resync

Inoltre, l'utilizzo w32tm /resync /rediscoverconsentirà anche di "forzare il rilevamento della rete con risorse prima della risincronizzazione".

O usando:

net time /set

Ti chiederà di impostare l'ora sul DC. (Funziona con versioni precedenti di Windows)


2
Per qualche motivo w32tm /resyncnon ha funzionato per me, ma net time /SET /Yha funzionato. Ho usato /Yper net timeperché a quanto pare non legge stdin correttamente quando si passa attraverso sshd da Cygwin.
qwertzguy,

Durante l'esecuzione w32tm /resyncho ricevuto il messaggio The computer did not resync because no time data was available.anche dopo il riavvio del servizio ma ha net time /SETfunzionato correttamente per me.
Chris Magnuson,

3

Sistema operativo: MS Windows 7

Tutte le idee sopra sono state provate ma non hanno aiutato. Il problema originale persiste: " Il computer non si è risincronizzato perché la modifica dell'ora richiesta era troppo grande " .

La soluzione è stata trovata nel registro: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ w32time \ Config

  • cambiarlo se l'ora locale è di fretta (es. 31-dic-2050): MaxNegPhaseCorrection
  • cambiarlo se l'ora locale è ritardata (es. 1-gennaio-1980): MaxPosPhaseCorrection
  • I valori predefiniti sono 0xD2F0 (ovvero 54000 sec. = 15 ore)

(usa Google per maggiori dettagli)

Uso questo semplice win_clock_sync.batfile dal menu Start 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

Godere! :-)


La tua risposta potrebbe usare una spiegazione della funzione dei valori MaxNegPhaseCorrectione MaxPosPhaseCorrectioninvece di suggerire che dovrebbero essere disabilitati alla cieca. Questo è ciò che fa questo script impostando i loro dati su 0xFFFFFFFF .
Twisty Impersonator

Non è possibile ignorare il messaggio di errore menzionato "Il computer non ha risincronizzato perché la modifica dell'ora richiesta era troppo grande." senza modificare i dati nei valori MaxNegPhaseCorrection e MaxPosPhaseCorrection. Oppure hai trovato una soluzione funzionante al problema originale ?? E perché scrivi "alla cieca"? Se ti prendessi un po 'di tempo per leggere, potresti vedere l'esportazione e l'importazione dei dati originali di questi valori, cosa è un po' lontana dal fare qualcosa "alla cieca".
Akos,

È necessario che questo script modifichi i valori su disabilitato, imponga un aggiornamento e quindi li ripristini ai valori consigliati.
Cory Knutson,

Twisty ha punti validi che non si concentrano realmente sul problema sollevato da NeverQuit ... ma poi Akos non ha spiegato chiaramente perché lo script sia una soluzione appropriata per NeverQuit. In sostanza, i valori del Registro di sistema MaxNegPhaseCorrection e MaxPosPhaseCorrection esistono per impedire al servizio W32Time di applicare cambiamenti drammatici all'ora corrente [in circostanze come una fonte di tempo esterna che va male male] Tuttavia, se si verifica un problema che porta a un PDCe alla deriva rapidamente da un fonte di tempo affidabile, quindi i controlli di correzione impediranno a w32tm di correggere la grande deriva. In questa situazione ::: b
Creaky_Uncle_Nick il

@Akos Downvote si è ritirato basandosi sul fatto che lo script ha effettivamente ripristinato le modifiche ai valori MaxNegPhaseCorrectione MaxPosPhaseCorrection. Incoraggio comunque a includere una spiegazione di ciò che fanno queste due impostazioni in quanto sono una caratteristica chiave della tua risposta ed è importante che un amministratore sia consapevole del fatto che se queste impostazioni dovessero essere impostate in modo permanente, configurerebbero il loro sistema in modo che accetti qualsiasi cambiamento di orario, non importa quanto sia grande, il che potrebbe interrompere Kerberos e altri importanti servizi di rete.
Twisty Impersonator

2

Powershell one liner se il server ntp è configurato:

gsv w32time | sasv; w32tm /resync /force

È possibile inserire questo file .bat all'avvio se la batteria CMOS non è riuscita in modo che possa risincronizzarsi all'avvio del sistema operativo:

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

/forcenon è un'opzione della riga di comando documentata per w32tm /resync.
Dai


0

Prova in questo ordine. Funziona sempre.

w32tm /unregister

w32tm /register

net stop w32time

net start w32time

w32tm /resync

0

Quasi nessuna delle soluzioni (tranne @Akos) funziona se l'host è un controller di dominio Active Directory (ADDC) di Windows Server 2016, poiché si considera una fonte "affidabile" che non può apportare grandi cambiamenti.

w32tm /resync /forcenon funziona perché /forcenon viene visualizzato nel server 2016.

net time /SET /Y non funziona neanche, perché avrebbe chiesto:

Vuoi impostare l'ora del computer locale in modo che corrisponda all'ora alle \AD.example.net? (S / N) [S]

Certo, non funzionerà se ci sei AD.example.net, /Ynasconde solo la domanda.

I passaggi funzionano per me utilizzando PowerShell:

  1. Impostare il servizio w32time come inaffidabile :
w32tm /config /reliable:no /syncfromflags:manual /update

Opzione /syncfromflags:manualsignifica sincronizzazione con NTP elencato nell'elenco peer (ovvero NTP esterno), /updateper notificare il servizio orario in cui la configurazione è cambiata.

  1. Riavvia il tempo w32
Stop-Service w32time
Start-Service w32time
  1. Sync
w32tm /resync

Questo dovrebbe funzionare.

  1. Se hai bisogno dell'ADDC come fonte di tempo affidabile, rendilo nuovamente affidabile:
w32tm /config /reliable:yes /update
Stop-Service w32time
Start-Service w32time

0

Ho un'immagine Win10 che posso ripristinare in un'istantanea in cui questo messaggio di errore è sempre riproducibile: "The computer did not resync because the required time change was too big."

Ho provato a scrivere una soluzione a questo problema senza alcun risultato:

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

Né le /reliable:noné le MaxPosPhaseCorrectionimpostazioni, né altri comandi indicate qui lavorato immediatamente in modo riproducibile.

Dopo aver aggiornato il registro, avviare il servizio, aggiornare la configurazione e riavviare nuovamente il servizio, ho comunque dovuto attendere molti minuti prima di w32tm /resync /rediscoverriuscire.

La sincronizzazione temporale alla fine ha successo, ma non in modo tempestivo e affidabile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.